这是我的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 Bolker或lukeA的答案解决了问题
答案 0 :(得分:1)
这个(可重现的)示例通过guide_legend()
使用override.aes
将fill
图例的点类型设置为实际使用填充背景的点类型,从而将您带到那里。对于您的其他问题,如果您能够澄清您期望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)))
答案 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"))))