我想用ggplot2绘制黑白图,但我不想使用形状(即纯黑色与开放黑色轮廓),因为我需要形状来描述另一组。
library(ggplot2)
str(mtcars)
p <- ggplot(data = mtcars, aes(x = wt, y=mpg, col=factor (vs), shape= factor (cyl) ))
p + geom_point(size=10) +
theme_bw() +
theme(legend.position="bottom", legend.title=element_blank(), legend.key = element_blank(),
axis.text.x = element_text(size=17),
axis.text.y = element_text(size=17),
axis.title.x = element_text(size=20),
axis.title.y = element_text(size=20),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
legend.text =element_text(size=22)
) +
scale_colour_manual(values = c("red", "blue"))
我想将0和1绘制成黑色和白色(黑色轮廓)但是在这种情况下很难,因为形状已经采用因子(vs)。还有什么我可以做的吗?谢谢。
答案 0 :(得分:3)
如果您希望在示例中使用两个单独的图例,则可以使用“可填充”形状和fill
美学而不是color
美学。形状显示为here;可填写的那些是黄色的,21-25。
要让您的图例看起来如何,尤其是fill
图例,您可以通过override.aes
中的guide_legend
覆盖形状。在这里,我还用黑色填充shape
传奇,但如果你不介意白色传说,那就没有必要了。
ggplot(data = mtcars, aes(x = wt, y=mpg, fill = factor(vs), shape= factor (cyl)
)) +
geom_point(size=10) +
theme_bw() +
scale_fill_manual(values = c("black", "white")) +
scale_shape_manual(values = c(21, 24, 22) ) +
guides(fill = guide_legend(override.aes = list(shape = 21) ),
shape = guide_legend(override.aes = list(fill = "black" ) ) )
答案 1 :(得分:0)
这是一个解决方案:
str(mtcars)
p <- ggplot(data = mtcars, aes(x = wt, y=mpg, shape=paste0(vs,cyl) ))
p + geom_point(size=10) +
theme_bw() +
theme(legend.position="bottom", legend.title=element_blank(), legend.key = element_blank(),
axis.text.x = element_text(size=17),
axis.text.y = element_text(size=17),
axis.title.x = element_text(size=20),
axis.title.y = element_text(size=20),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
legend.text =element_text(size=22)
)+scale_shape_manual(values = c("04"=15,"06"=16,"08"=17,"14"=0,"16"=1,"18"=2))