2010-06-28 41 views
5

在呈现实际数据之前,我想绘制一张与数据一致的绘图,但没有数据点。这有助于我解释如何解释这样一个情节,而不会让观众分散情节中的实际数据。在空ggplot中获取图例着色

所以在下面的代码中,我基本上想与geom_blank()交换geom_point()。没问题。

但是,这也会从图表代码创建的图例中移除颜色和大小信息。有没有办法让它回来?

ggplot(vas, aes(x=time, y=pain, colour=light.color, size=light.intensity)) + 
    #geom_point(na.rm=FALSE) + 
    geom_blank() + 
    facet_wrap(~ppno) + 
    scale_colour_manual(values=cols) + 
    scale_y_continuous(name="VAS Pain (a.u.)") + 
    scale_x_continuous(name="Time (minutes)") 

什么是适当的方式来获取颜色指示回图例(S)。现在它们只显示特定参数(颜色或大小)的各个级别的值,而不显示与特定级别一致的实际图形元素(颜色或点的大小)。

回答

0

你可以绘制两个geom_points() - 一个与你的背景颜色?

ggplot(cars, aes(x=speed, y=dist))+ 
geom_point(aes(col=speed))+ 
geom_point(colour="white")+ 
theme_bw() 
+0

谢谢你的建议! 我已经想到了这个想法,但放弃它,因为我更喜欢ggplot()使用的默认灰度网格。 所以在这种情况下很难找到淡入背景的正确颜色(也因为每个点必须有两种颜色,一种是背景,另一种是与网格线相交,也是白色)。 – Paul 2010-06-28 14:20:45

+0

这是有道理的。你总是可以画出这个传奇,并且绘制一个空的阴谋。有点像这样:http://learnr.wordpress.com/2009/05/26/ggplot2-two-or-more-plots-sharing-the-same-legend/ – Andreas 2010-06-28 15:49:12

2

如何隐藏绘图窗口外的实际点?沿着这些路线的东西:

ggplot(cars, aes(x=speed+100, y=dist))+ #move x values to the right 
    geom_point(aes(col=speed))+ 
    scale_x_continuous(at=seq(5,125,by=5), limits=c(0,30)) #set plotting window 
0

最后,沿着以兄子的建议(即我最初不能得到工作,所以丢弃,unrightly左右),我想出了下面的代码。

vas2 <- vas 
vas2$time <- vas2$time+181 
pp <- p %+% vas2 #p is the above plot assigned to a variable. 
pp + scale_x_continuous(name="Time (minutes)", limits=c(0,180)) 

所以大约就在您的数据移位,上轴,然后排除

1

一个简单的方法那部分要做到这一点是使用了尺寸选项:

ggplot(vas, aes(x=time, y=pain, colour=light.color, size=light.intensity)) 
+ geom_point(size=0)