在 ggplot2 中添加图例

Posted

技术标签:

【中文标题】在 ggplot2 中添加图例【英文标题】:Adding a Legend in ggplot2 【发布时间】:2020-12-03 07:04:57 【问题描述】:

我有以下代码。

  Financial_Wealth.lq,Financial_Wealth.uq,Total_Wealth.lq,Total_Wealth.uq,time=seq(0,(sPar.dNN),1))
ggplot(data, aes(x=time)) +
  geom_line(aes(y = Human_Capital.mean), color="red", size=1) +
  geom_line(aes(y = Financial_Wealth.mean), color="goldenrod3", size=1) +
  geom_ribbon(aes(ymin=Financial_Wealth.lq, ymax = Financial_Wealth.uq), alpha=0.4, fill="goldenrod3") +
  geom_line(aes(y = Total_Wealth.mean), color="dodgerblue", size=1)+
  geom_ribbon(aes(ymin=Total_Wealth.lq, ymax=Total_Wealth.uq), alpha=0.4, fill = "dodgerblue") +
  scale_x_continuous(name = 'Age',
                     breaks=(c(seq(0,(sPar.dNN),4))))+
  scale_y_continuous(name = 'Wealth Level',
                     breaks = seq(0,100,10))+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        legend.title = element_text(size=12, face="bold"),
        legend.text = element_text(size=12),
        axis.title = element_text(size=12),
        axis.text = element_text(size=10)) +
  coord_cartesian(xlim = c(0,45), ylim = c(0,100), expand = TRUE)+
  scale_fill_manual(name="Median",values=c("goldenrod3", "red","dodgerblue"),
                    labels = c("Financial Wealth", "Human Capital", "Total Wealth"))+
  ggtitle('Optimal Wealth Development') 

您可以将每个数据输入解释为等长数字的向量。有人可以告诉我为什么传说没有出现吗?我需要做什么不同的事情!在此先感谢 :) 我已附上它正在生成的 image,以便您了解我想要实现的目标。

【问题讨论】:

嗨。使用dput(data) 发布您的数据,或提供一个可重复的最小示例。见***.com/questions/5963269/… ***.com/questions/54543101/… 或 ***.com/questions/10349206/… 是否有助于解决您的问题? 使用scale_color_manual() 这能回答你的问题吗? Adding a legend to a combined line and bargraph ggplot 【参考方案1】:

要添加图例,您需要在aes() 中指定其中一种美学。在这种情况下,请接听您所有的geom_line() 电话,并在aes() 中为每个电话放置color=。在aes() 中分配给color= 的值将是图例中标签的文本:而不是颜色。要分配颜色,您需要添加scale_color_manual() 并设置values= 命名向量。

以下更改应该可以解决您的问题,尽管在没有您的数据集或 reprex 的情况下,我无法测试新代码的功能。

# original code
... +
geom_line(aes(y = Human_Capital.mean), color="red", size=1) +
geom_line(aes(y = Financial_Wealth.mean), color="goldenrod3", size=1) +
geom_line(aes(y = Total_Wealth.mean), color="dodgerblue", size=1)+

# new plot code
... +
geom_line(aes(y = Human_Capital.mean, color="Human Capital Mean"), size=1) +
geom_line(aes(y = Financial_Wealth.mean, color="Financial Wealth Mean"), size=1) +
geom_line(aes(y = Total_Wealth.mean, color="Total Wealth Mean"), size=1) +
scale_color_manual(values=c(
  "Human Capital Mean"="red",
  "Financial Wealth Mean"="goldenrod3",
  "Total Wealth Mean"="dodgerblue"))

【讨论】:

我可以确认这适用于我的代码!非常感谢:D

以上是关于在 ggplot2 中添加图例的主要内容,如果未能解决你的问题,请参考以下文章

在 ggplot2 中向线型图例添加附加线

ggplot2:为彩色条形图和图例添加不同的纹理[重复]

用ggplot2添加图例[重复]

如何将图例添加到 ggplot2 中的多行?

在 R 中使用 ggplot2 向饼图图例添加值

R语言ggplot2可视化自定义图例实战:添加自定义的图例添加填充色的图例