R图例仅显示第一项

时间:2015-02-10 01:26:43

标签: r ggplot2 legend

这是我的R代码,下面是结果图。

ggplot(Data,aes(x=P, y=T, colour=Study , fill=Method, shape=Direction)) 
+ geom_point(size=2, alpha=0.5) 
+ scale_shape_manual(values=c(22,23,24),labels=c("1","2","3")) 
+ scale_colour_manual(values=cp2,labels=cp2) 
+ scale_fill_manual(values=c("white","black"),labels=c("1","2"))

为什么图例只显示形状的第一个值并显示不正确的填充值(第二个值应为空)?

另外,我应该使用离散而不是手册吗?

(我在64位Windows 7上使用RStudio版本0.98.1091和R版本3.1.2)

编辑我现在意识到符号在导出的图像中正确显示(我没有注意到!)...只有在RStudio中符号不起作用(填充问题仍然存在)但是使用下面Ben BolkerlukeA的答案解决了问题 Output from R

2 个答案:

答案 0 :(得分:1)

这个(可重现的)示例通过guide_legend()使用override.aesfill图例的点类型设置为实际使用填充背景的点类型,从而将您带到那里。对于您的其他问题,如果您能够澄清您期望shape(在这种情况下为gear)图例中的内容,将会有所帮助。

加载包:

library("ggplot2")

修改内置mtcars数据框:

mm <- transform(mtcars,
                am=factor(am),
                gear=factor(gear),
                carb=factor(carb>1),
                cyl=factor(cyl))
theme_set(theme_classic())  ## blank background

ggplot(mm,
       aes(x=wt, y=mpg, colour=cyl,
           fill=carb, shape=gear))+
             geom_point(size=2, alpha=0.5)+
               scale_shape_manual(values=c(22,23,24))+
               scale_fill_manual(values=c("white","black"),
                   guide=guide_legend(override.aes=list(shape=22)))

enter image description here

答案 1 :(得分:1)

您可以使用override.aes操作图例来覆盖这种奇怪的行为:

library(ggplot2)
df <- data.frame(x = runif(12), y = runif(12), fill = gl(2, 6), colour = gl(4, 3), shape = gl(3, 4))
ggplot(df, aes(x, y, fill = fill, colour = colour, shape = shape)) + 
  scale_fill_manual(values=c("white","black"),labels=c("1","2")) +
  geom_point(size=10, alpha=0.5) + 
  scale_shape_manual(values=c(22,23,24),labels=c("1","2","3")) + 
  guides(shape = guide_legend(override.aes = list(alpha = 1)), 
         fill = guide_legend(override.aes = list(colour = c("black", "white"))))