如何在系数路径图的线条末端标注数值?附R绘图代码
给系数路径图的线条末端添加数值标注
嘿,我帮你把代码补全并实现末端标注的功能啦!核心思路是先找到每条线的最后一个数据点(也就是x值最大的位置),然后用geom_text()在这个位置标注对应的y值。下面是完整的可运行代码:
library(ggplot2) library(dplyr) library(tidyr) # 初始化数据矩阵 value2 <- matrix(c(0,0,2,1,2,0,0,0,0,0,0,0,0,0,0,1,0,2,3,4,0,0,0,0,0), nrow =5 ) # 定义L1范数函数 L1 <- function(x) sum(abs(x)); # 整理绘图数据:计算每行的L1范数作为x轴,转换为长格式 plot_data <- bind_cols( as.data.frame(value2) %>% summarise_all(funs(L1(.))) %>% t() %>% as.data.frame() %>% rename(x = V1), t(value2) %>% as.data.frame() %>% rename_all(funs(gsub("V", "", .))) ) %>% gather(row, y, 2:(nrow(value2)+1)) # 准备标注数据:筛选每条线的末端点(x最大的点) label_data <- plot_data %>% group_by(row) %>% filter(x == max(x)) %>% ungroup() # 绘制路径图并添加末端标注 ggplot(plot_data, aes(x = x, y = y, color = row, group = row)) + geom_line(linewidth = 1) + # 绘制系数路径线条 # 添加末端数值标注,稍微向右偏移避免和线条重叠 geom_text(data = label_data, aes(label = y), hjust = -0.2, size = 4) + labs(title = "系数路径图(带末端数值标注)", x = "L1范数", y = "系数值") + theme_minimal()
关键部分说明:
- 我们先把整理好的绘图数据存为
plot_data,方便后续复用; label_data通过分组筛选,精准定位到每个row(对应每条路径线)的末端点——也就是x值最大的那个观测;geom_text()里指定用label_data的数据,label = y直接把末端的系数值作为标注文本,hjust = -0.2让文本稍微靠右偏移,避免和线条末端重叠;- 额外添加了标题、坐标轴标签和简约主题,让图表可读性更强。
你直接运行这段代码就能得到带末端数值标注的系数路径图啦!
内容的提问来源于stack exchange,提问作者Ville
相关产品推荐
相关产品推荐

