我想在点图中传达三种类型的信息。我可以使用颜色,形状和填充(我的实际数据有太多的点,有效地使用大小)。但如果填充颜色与轮廓颜色相同,则效果最佳。
我能得到的最接近的是:
data(mtcars)
p <- ggplot(mtcars,aes(x=mpg,y=wt))+
geom_point(aes(color=factor(cyl),shape=factor(gear),fill=factor(vs)))+
scale_fill_manual(values=c("black",NA))+scale_shape_manual(values=c(21,22,23))
将黑色填充到所有轮廓颜色中,很难看。关于如何用蓝色填充红点和蓝点的任何想法?
答案 0 :(得分:18)
介绍NA
,并使用NA
将其映射到scale_fill_discrete
颜色:
ggplot(mtcars,aes(x=mpg,y=wt)) +
geom_point(size=10,
aes(
color=factor(cyl),
shape=factor(gear),
fill=factor(ifelse(vs, NA, cyl)) # <---- NOTE THIS
) ) +
scale_shape_manual(values=c(21,22,23)) +
scale_fill_discrete(na.value=NA, guide="none") # <---- NOTE THIS
产地:
编辑:为了解决Flick先生,我们可以欺骗并添加图层/ alpha。注意我们需要添加一个图层,因为据我所知,没有办法独立控制颜色和填充的alpha:
library(ggplot2)
ggplot(mtcars,aes(x=mpg,y=wt, color=factor(cyl), shape=factor(gear))) +
geom_point(size=10, aes(fill=factor(cyl), alpha=as.character(vs))) +
geom_point(size=10) +
scale_shape_manual(values=c(21,22,23)) +
scale_alpha_manual(values=c("1"=0, "0"=1))