2011-08-23 61 views
4

我已经设法让ggplot2创建几乎我想从数据集中得到的情节,但我无法弄清楚如何标记我的观点。我如何说服ggplot2为我创建一个图例?

鉴于数据看起来像这样:

sample <- data.frame(rowid=seq(100), a=runif(100), b=runif(100, .5, 1.5)) 

我可以创建这两个东西比较像这样的情节(看起来不太好笑给我真正的和更好的标签,但是这没有一个良好的近似值):

ggplot(data=sample) + 
     geom_point(aes(rowid, a), color="#990000", alpha=0.4) + 
     geom_smooth(aes(rowid, a), color='#990000') + 
     geom_point(aes(rowid, b), color='#000099', alpha=0.4) + 
     geom_smooth(aes(rowid, b), color='#000099') + 
     labs(x='Trial', y='Time') 

我怎样才能得到一个图例显示红色和蓝色是什么?

编辑

感谢来自巴蒂斯特评论,我现在有以下几点:

wide = melt(sample, id="rowid") 

ggplot(data=wide) + 
     geom_point(aes(rowid, value, color=variable), alpha=0.1) + 
     scale_alpha(0.3) + 
     scale_colour_manual(name="Variables", values=c("b"="#990000", "a"="#000099")) + 
     geom_smooth(aes(rowid, value, color=variable)) + 
     labs(x='Trials', y='Time') 
+3

的想法是一个具有悠久格式data.frame工作,如'熔化(sample,id =“rowid”)'。然后你可以做'aes(rowid,value,color = variable)' – baptiste

+0

你很好地回答了我的问题,但我不能将你标记为获胜者。 :)虽然这对我来说似乎有点难以独立控制颜色和alpha,因为我的点和我的线条。 – Dustin

+0

令人信服的总是关于'正确的论点'大声笑 –

回答

5

巴蒂斯特使用meltreshape2包提示指出你在正确的方向。

要分别控制点的平滑度和平滑度,只需在每个几何图形中指定所需的α值即可。请注意,示例代码中的scale_alpha语句什么都不做,因为alpha没有映射到任何美学,所以我删除了这个。此外,由于你的映射是相同的所有层,这是比较容易的ggplot PARAMATERS而非GEOM参数指定:

sample <- data.frame(rowid=seq(100), a=runif(100), b=runif(100, .5, 1.5)) 
wide = melt(sample, id="rowid") 

ggplot(data=wide, aes(x=rowid, y=value, color=variable)) + 
    geom_point(alpha=0.1) + 
    scale_colour_manual(name="Variables", values=c("b"="#990000", "a"="#000099")) + 
    geom_smooth(alpha=0.8) + 
    labs(x='Trials', y='Time') 

enter image description here

+0

谢谢。你解决了我的其他问题,并给了我一些非常需要的提示。 – Dustin

相关问题