【问题标题】:ggplot legends when plot is built from two data frames从两个数据框构建绘图时的ggplot图例
【发布时间】:2016-12-18 20:13:20
【问题描述】:

我有来自两个不同数据帧的数据。我正在尝试为每个数据框创建图例。我知道我可以组合数据框并执行此操作,但由于我的数据源,从两个不同的数据框进行绘图是最有意义的。

请在下面找到简化的示例。我已经接近了,但传说中的“主要预测”只是白色。我想显示“主要预测”在外部是红色的,内部是白色的。

x = seq(1,10, 1)
y = seq(10,100, 10)

df  = data.frame(x=x, y=y)
df2 = data.frame(x=5, y=50)

p = ggplot(data=df) + 
  geom_point(data=df,aes(x=x, y=y, color="Weekly Forecast"), fill="red", size=5, shape=16)  + 
  geom_line(data=df,aes(x=x, y=y), color="red", size=1)  + 
  geom_point(data=df2, aes(x=x, y=y, color="Main Forecast"), size=2, shape=16)  +
  scale_color_manual("Legend Title", breaks=c("Weekly Forecast", "Main Forecast"), values = c("white","red"))
p

任何帮助将不胜感激。

【问题讨论】:

  • 不要把data =df放在ggplot()调用中,把它们留在geoms中

标签: r dataframe ggplot2 legend


【解决方案1】:

您需要使用一个需要填充的符号 (pch = 21:25)。然后您需要使用override.aes 来获取正确的图例。我已将共享数据和aes 移动到ggplot 命令中。

ggplot(data=df, aes(x=x, y=y)) + 
  geom_point(aes(color="Weekly Forecast"), shape=16, size = 5)  + 
  geom_line(color="red", size=1)  + 
  geom_point(data=df2, aes(color="Main Forecast"), shape=21, fill = "white", size = 5)  +
  scale_color_manual("Legend Title", limits=c("Weekly Forecast", "Main Forecast"), values = c("red","red")) +
  guides(colour = guide_legend(override.aes = list(pch = c(16, 21), fill = c("red", "white"))))

没有override.aes也可以这样做:

ggplot(data=df, aes(x=x, y=y)) + 
  geom_line(aes(color="Main Forecast"), size=1)  + 
  geom_point(aes(color="Weekly Forecast", fill="Weekly Forecast"), shape=21, size = 5)  +
  geom_point(data=df2, aes(color="Main Forecast", fill="Main Forecast"), shape=21, size = 5)  +
  scale_color_manual(name="", values = c("red","red")) +
  scale_fill_manual(name="", values=c("white","red"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2020-11-19
    • 2023-03-26
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2011-10-18
    相关资源
    最近更新 更多