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

如何为同一坐标轴上的ggplot曲线添加对应图例?

多曲线绘图添加侧边图例的解决方法

基础R绘图方案

如果用基础R的plot()和lines()绘制多条曲线,核心是保证曲线颜色和图例一一对应:

  1. 提前定义颜色向量和图例标签,数量匹配你的11列y数据:
    color_vec <- rainbow(11) # 生成11种区分度高的颜色
    legend_tags <- paste0("column ", 1:11)
    
  2. 初始化绘图后,循环绘制每条曲线并指定对应颜色:
    # 先画第一条曲线作为基础
    plot(df$interval, df[,2], type = "l", col = color_vec[1], xlab = "interval", ylab = "y value")
    # 循环绘制剩余10条
    for (i in 3:ncol(df)) {
      lines(df$interval, df[,i], col = color_vec[i-1])
    }
    
  3. 调用legend()添加侧边图例,注意参数匹配:
    legend("right", legend = legend_tags, col = color_vec, lty = 1, cex = 0.8)
    
    • lty=1指定图例用实线,和曲线一致;cex可以调整图例文字大小避免溢出

ggplot2方案(更省心)

ggplot2对多组数据的图例支持更友好,需要先把宽格式数据转成长格式:

  1. 用tidyr包转换数据结构:
    library(tidyr)
    library(ggplot2)
    
    df_long <- df %>%
      pivot_longer(cols = -interval, names_to = "group", values_to = "value")
    
  2. 绘图时映射颜色到分组变量,自动生成图例,再自定义标签:
    ggplot(df_long, aes(x = interval, y = value, color = group)) +
      geom_line() +
      scale_color_discrete(labels = paste0("column ", 1:11)) +
      theme(legend.position = "right") # 指定图例在右侧
    

常见问题排查

  • 基础绘图图例不显示/错位:检查legend()的col参数是否和曲线的col完全对应,lty是否匹配曲线类型
  • ggplot2无图例:确认是否把数据转成了长格式,且aes()里指定了color映射到分组变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:25:41