如何在一个GGPlot中绘制两个不同变量的直方图,并且带有图例和颜色。

5
这是我在Stack Overflow上的第一篇文章,第一个可重复的例子,我对R也很新,请温柔点! 我想在一个图中显示两个直方图。每个直方图都是数据框中的不同变量(列)。我无法弄清楚如何在着色条之后同时显示图例。如果使用scale_fill_manual,则会忽略颜色,但如果使用scale_colour_manual,则颜色仅为条形图的轮廓。如果将颜色分别映射到每个直方图上(完全不使用scale_xxx_manual),颜色效果很好,但是我就无法获得图例。
TwoHistos <- ggplot (cars) +
  labs(color="Variable name",x="XX",y="Count")+
  geom_histogram(aes(x=speed, color= "Speed"),  alpha = 0.2 ) + 
  geom_histogram(aes(x=dist, color= "Dist"), alpha = 0.2) + 
  scale_colour_manual(values = c("yellow","green"))
TwoHistos

这是我的结果的图片(我已经粘贴了,但不知道为什么没有显示出来。非常抱歉!): 两个带颜色轮廓线的直方图


嘿,你是否有任何“视觉”示例,以便更好地理解你想要的东西(例如网页图像或其他)? - elielink
1
你需要使用fill美学而不是color来为条形图填充不同的颜色。 :) 包含可重现的代码示例做得很好。 - aosmith
啊,我犯了一个新手错误!谢谢大家的帮助。 - Abigail
2个回答

1

如果我理解正确的话,你可能想在geom_histogram()调用中提供一个fill参数。

(我在这里使用了内置的R数据mtcars,因为你没有提供任何数据)

TwoHistos <- ggplot (mtcars) +
  labs(fill="Variable name",x="XX",y="Count")+
  geom_histogram(aes(x=hp, fill= "Speed",  color = "yellow"), alpha = 0.2 ) + 
  geom_histogram(aes(x=disp, fill= "Dist", color = "green"), alpha = 0.2) +
  scale_fill_manual(values = c("yellow","green"))+
  scale_colour_manual(values = c("yellow","green"), guide=FALSE)
TwoHistos

编辑:为了让geom_histogram()mtcars配合使用,我已经更改了x的值。

在此输入图片描述

非常感谢您的帮助!我真的很感激。一个快速的问题 - 为什么图例中“Dist”的正方形不是黄色的?谢谢! - Abigail
1
抱歉...我错过了。不幸的是,我无法在这里得到我想要的东西...图例来自aes()调用,所以它们都是绿色的。我已经编辑了一个可以解决这个问题的答案,通过在图例中显示填充,但它没有外部的线。 - Elk

1
使用fill代替color,并使用scale_fill_manual
TwoHistos <- ggplot (cars) +
  labs(color="Variable name",x="XX",y="Count")+
  geom_histogram(aes(x=speed, fill= "Speed"),  alpha = 0.2 ) + 
  geom_histogram(aes(x=dist, fill= "Dist"), alpha = 0.2) + 
  scale_fill_manual(values = c("yellow","green"))
TwoHistos

enter image description here


非常感谢!这是一个新手错误。我该如何为每个变量的直方图添加相同颜色的边框? - Abigail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接