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

Pet*_*erK 12 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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

黑色填充所有轮廓颜色,丑陋.关于如何用蓝色填充红点和蓝点的任何想法?

Bro*_*ieG 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
Run Code Online (Sandbox Code Playgroud)

生产:

在此输入图像描述


编辑:为了解决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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @PeterK,确切地说.此外,第一个是有效的,因为我们将每个`vs == 1`点的填充值设置为"NA".这会产生深灰色,但如果我们手动指定`NA`颜色应该是'NA`而不是默认颜色,那么"颜色"变得透明(这就是解释`NA`的方式). (2认同)