在一个空的ggplot中获得图例颜色

7
在呈现实际数据之前,我想制作一个与数据相同但没有数据点的图形。这有助于我解释如何解读此类图形,而不会让观众分心于将出现在图形中的实际数据。
因此,在下面的代码中,我基本上想用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)")

什么是将颜色指示返回到图例中的正确方法?现在它们仅显示某个参数(颜色或大小)的各个级别的值,但不显示与某个级别相对应的实际图形元素(颜色或点的大小)。
4个回答

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

1
一个简单的方法是使用size选项:
ggplot(vas, aes(x=time, y=pain, colour=light.color, size=light.intensity)) 
 + geom_point(size=0)

0
你能否画出两个geom_points() - 其中一个的颜色和你的背景颜色一样?
ggplot(cars, aes(x=speed, y=dist))+
geom_point(aes(col=speed))+
geom_point(colour="white")+
theme_bw()

谢谢你的建议!我已经考虑过这个想法,但是我放弃了,因为我非常喜欢ggplot()使用的默认灰度网格。所以在这种情况下,很难找到淡入背景的正确颜色(也因为每个点必须有两种颜色,一种用于背景,当它与网格线相交时,还有白色)。 - Paul
有道理。你可以只绘制图例和一个空图。就像这样:http://learnr.wordpress.com/2009/05/26/ggplot2-two-or-more-plots-sharing-the-same-legend/ - Andreas

0
最终,我采纳了Aniko的建议(一开始无法实现,所以被我抛弃了,这是我的错误),并编写了以下代码。
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)) 

所以这只是在轴上移动数据并排除那部分的问题。


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