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

使用subset子集绘制ggplot2图表时如何添加并自定义图例

正确配置图例的代码示例

ggplot(all.months,aes(x=SalesMonth,y=MonthlySales)) +
  geom_line(aes(color=ActOrPred, linetype=ActOrPred), size=3) +
  expand_limits(y=c(0,310000)) +
  scale_y_continuous(labels = comma) +
  scale_x_date(date_labels="%b %y",breaks ="2 month",expand=c(.06,1)) +
  scale_color_manual(
    labels = c("实际值", "预测值"),
    values = c("#69b3a2", "gray")
  ) +
  scale_linetype_manual(
    labels = c("实际值", "预测值"),
    values = c("solid", "dashed")
  ) +
  labs(
    title = "Forecast: Mountain-200 Black, 38",
    x="Sales Month",
    y="Revenue",
    color = "数据类型",
    linetype = "数据类型"
  ) +
  theme_bw() +
  theme( 
    plot.title = element_text(color = "#2CC4C4",size = 12,face = "bold",hjust = 0.5),
    axis.line = element_line(color = "gray"),
    axis.text.x = element_text(size = 7),
    axis.text.y = element_text(size = 7),
    axis.title.x = element_text(size = 8),
    axis.title.y = element_text(size = 8),
    panel.border = element_blank(),
    legend.title = element_text(size = 9, face = "bold")
  ) +
  geom_smooth(method='lm',position="identity",se=F,size=0.4,color="black")

核心配置说明

  • 自定义图例文本:在scale_*_manual系列函数的labels参数中传入和分组值对应的文本数组即可,顺序要和分组变量的取值顺序一致(本案例中分组变量ActOrPred取值为A、P,所以labels顺序对应实际值、预测值)
  • 自定义图例标题:有两种生效方式,一是在labs参数中给对应映射的属性(本案例为color、linetype)赋值标题,二是直接在scale_*_manual的name参数里设置,两种方式效果一致。注意theme(legend.title = element_text())仅用来调整图例标题的显示样式(字体、字号、颜色等),不负责设置标题内容
  • 多属性映射合并图例:如果同时映射了color和linetype两个属性,只要保证两者的图例标题、文本标签完全一致,ggplot会自动将两个属性的图例合并为一个,同时展示颜色和线型区别,和图表实际表现完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:48:04