2013-05-09 67 views
3

我有一个带有颜色图例的图表,并且想要为其添加总计/平均值geom_...系列。使用颜色图例将总计或平均值添加到ggplot

例如:

d <- ggplot(data=mtcars, aes(x=cyl, y=mpg, color=factor(vs))) + geom_point() 
d + stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax = "mean", colour = "black") 

example plot

我想总geom_颜色是黑色(在我的例子中工作),并在传说中有“总”的标签(这是从示例中丢失的)。新的“总计”标签应该是图例中的最后一个值。

在这个例子中的VS 0因子水平和一,本简单化两种方式我的情况:

  1. 我有很多因素的水平,所以我找的,不需要人工的解决方案操纵图例中的颜色/标签。
  2. “Total”自然是这个数据集中的最后一个(因为它在0和1之后,按字母顺序),但是在我的数据集中它出现在中间的某个地方。所以这些因素可能需要重新排序?为了这个例子,数据集假设应该首先列出“总数”,以显示如何重新排列标签。

最后,就会出现,我不认为stat_summary将能够正确计算的平均时间,所以我想通过第二数据集手动计算平均值或全部的灵活性。例如:

d + geom_point(data = as.data.table(mtcars)[, list(avg = mean(mpg)), by = "cyl"] ...) 
+1

是[这](HTTP://计算器。 com/q/11839360/707145)有帮助吗? – MYaseen208 2013-05-09 03:19:31

+0

感谢您的链接。这两个类似问题的答案都涉及手动指定颜色和标签,这对我的应用程序来说太麻烦了。我将编辑我的问题,以表明我有很多因子水平,并且我想为许多不同的数据集(每个数据集具有不同的级别)创建此图表。 – dnlbrky 2013-05-09 03:33:27

+0

你有没有在剧情中尝试过子集和组? – KLDavenport 2013-09-06 14:46:35

回答

3

一个办法是覆盖总的未使用的GEOM,ALA答案this related question

d <- ggplot(data=mtcars, aes(x=cyl, y=mpg, color=factor(vs))) + geom_point() 
d + stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax = "mean", 
       colour = "black", aes(shape="total"), geom="point") + 
    guides(colour=guide_legend(order=1), shape=guide_legend(title=NULL, order=2)) 

resultant plot