从两个数据框构建绘图时的 ggplot 图例
ggplot legends when plot is built from two data frames
我有来自两个不同数据框的数据。我正在尝试为每个数据框创建图例。我知道我可以合并数据框并执行此操作,但由于我的数据源,从两个不同的数据框绘制最有意义。
请在下面找到简化的示例。我已经接近了,但图例中的 'Main Forecast' 只是白色。我想显示 'Main Forecast' 外面是红色,里面是白色的地方。
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
如有任何帮助,我们将不胜感激。
您需要使用其中一个进行填充的符号 (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"))
我有来自两个不同数据框的数据。我正在尝试为每个数据框创建图例。我知道我可以合并数据框并执行此操作,但由于我的数据源,从两个不同的数据框绘制最有意义。
请在下面找到简化的示例。我已经接近了,但图例中的 'Main Forecast' 只是白色。我想显示 'Main Forecast' 外面是红色,里面是白色的地方。
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
如有任何帮助,我们将不胜感激。
您需要使用其中一个进行填充的符号 (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"))