填充颜​​色=线条颜色的填充和空心形状

时间:2014-09-02 20:57:25

标签: r ggplot2

我想在点图中传达三种类型的信息。我可以使用颜色,形状和填充(我的实际数据有太多的点,有效地使用大小)。但如果填充颜色与轮廓颜色相同,则效果最佳。

我能得到的最接近的是:

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))

enter image description here

将黑色填充到所有轮廓颜色中,很难看。关于如何用蓝色填充红点和蓝点的任何想法?

1 个答案:

答案 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

产地:

enter image description here


编辑:为了解决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))

enter image description here