如何使用R语言plot函数为折线图每条折线末端添加标签
用R基础plot()为折线末端添加标签
完全可以用基础绘图系统实现,核心是通过text()函数定位到每条折线的末端坐标,然后添加对应标签。下面是完整的实现步骤和示例代码:
步骤1:模拟/准备数据
假设你的case_study1是行代表不同类别、列代表年份(V20xx)的表格,先处理成绘图需要的格式:
# 模拟case_study1数据(替换成你的真实数据) case_study1 <- data.frame( Category = c("类别A", "类别B", "类别C"), V2018 = c(10, 15, 8), V2019 = c(12, 18, 10), V2020 = c(15, 20, 12), V2021 = c(18, 22, 15), V2022 = c(20, 25, 18) ) # 提取年份作为x轴刻度 years <- 2018:2022 # 将每行转换为数值向量(剔除类别列) line_vectors <- lapply(1:nrow(case_study1), function(i) as.numeric(case_study1[i, -1]))
步骤2:绘制基础折线图
先初始化画布,再依次添加所有折线:
# 初始化绘图,设置y轴范围时预留标签空间(避免标签超出画布) plot(years, line_vectors[[1]], type = "l", lwd = 2, col = "#E63946", xlab = "年份", ylab = "数值", ylim = range(unlist(line_vectors)) + c(-1, 3)) # 循环添加剩余折线 line_colors <- c("#457B9D", "#1D3557") for (i in 2:length(line_vectors)) { lines(years, line_vectors[[i]], type = "l", lwd = 2, col = line_colors[i-1]) }
步骤3:添加末端标签
通过tail()获取每条折线的最后一组坐标,用text()在对应位置添加标签:
# 循环为每条折线添加末端标签 all_colors <- c("#E63946", "#457B9D", "#1D3557") for (i in 1:length(line_vectors)) { last_x <- tail(years, 1) last_y <- tail(line_vectors[[i]], 1) # pos=4表示标签在坐标右侧,offset控制距离,cex调整字号 text(last_x, last_y, labels = case_study1$Category[i], pos = 4, offset = 0.3, col = all_colors[i], cex = 1.1) # 可选:给末端点加标记,增强可读性 points(last_x, last_y, pch = 16, col = all_colors[i], cex = 1.2) }
关键细节说明
- 调整
ylim:一定要给标签预留足够的垂直空间,否则标签会被截断 - 标签位置:
pos参数可灵活调整(1=下方,2=左侧,3=上方,4=右侧),如果末端靠近图边缘,也可以手动偏移x坐标(比如last_x + 0.1) - 样式自定义:通过
col、cex、font等参数匹配折线的样式,保持视觉一致性
内容的提问来源于stack exchange,提问作者Steven Cui
相关产品推荐
相关产品推荐

