You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggplot中为多条曲线添加对应名称标签?

你原代码中aes()里的showlabels=TRUE是无效参数,ggplot2原生不支持该配置,要实现曲线旁标注对应国家名的效果,推荐以下两种常用方案:

方案1:使用ggrepel包(推荐,自动避让避免标签重叠)

首先安装加载所需包:

# 未安装包可先执行安装
# install.packages("ggplot2")
# install.packages("ggrepel")
library(ggplot2)
library(ggrepel)

修改绘图代码如下:

plott = ggplot(PL2, aes(x = P, y = growth.rate2020, color = Country)) + 
  geom_point() +
  geom_line() + # 需绘制曲线则保留该行,仅保留散点可删除
  geom_text_repel(
    # 取每个国家x轴最大值对应的位置放置标签,和示例图效果一致
    data = ~ subset(.x, P == max(P)),
    aes(label = Country),
    nudge_x = 0.1, # 可根据你的数据范围调整标签向右偏移的距离
    show.legend = FALSE # 禁止标签进入图例,避免重复显示
  )

方案2:使用ggplot2原生geom_text(无需额外安装包,适合国家数量少的场景)

plott = ggplot(PL2, aes(x = P, y = growth.rate2020, color = Country)) + 
  geom_point() +
  geom_line() +
  geom_text(
    data = ~ subset(.x, P == max(P)),
    aes(label = Country),
    hjust = -0.1, # 调整标签水平偏移量
    show.legend = FALSE
  ) +
  # 适当放大x轴范围,避免标签被画布截断
  expand_limits(x = max(PL2$P) * 1.1)

注意事项

  • 如果你的数据集未按P值升序排列,可替换标签筛选逻辑,用dplyr取每个国家的最后一条观测即可
  • 偏移量参数需要根据你的实际数据范围调整,避免标签过远或者和曲线重叠

内容的提问来源于stack exchange,提问作者Jinane Jouni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:39:03