ggplot2 中形状的手动更改将颜色从实心更改为轮廓?

Manual change of shape in ggplot2 changes colors from solid to outline?

我的总体目标是用黑色勾勒出纯色形状。

我在 ggplot2 散点图中格式化形状和颜色时遇到问题。我想要基于位置的形状和基于时间的颜色。这很好用,但是当我使用 scale_shape_manual() 手动更改形状时,因为很难看到十字。颜色从填充变为轮廓,如下所示。

转到:

我尝试重新组织我在 aes() 中呈现变量的顺序,使用 fill = 而不是 color = ,创建单独的 geom_point() 层,并手动更改scale_color_manual() 的色标。我的原码是:

p <- ggplot(data=data.scores,aes(x=NMDS1,y=NMDS2))+
  geom_point(aes(shape=Location, color=Time), size=3) +
  scale_shape_manual(values = c(0,1,2,5))

在上面显示的内容之后我还有 theme() 脚本,但我已经删除了那些,因为我已经确认它们不会影响我的问题。此外,我会理想地使用 pch 勾勒出黑色的点,如下所示:

p <- ggplot(data=data.scores,aes(x=NMDS1,y=NMDS2))+
      geom_point(aes(shape=Location, color=Time), color = "black", pch=21, size=3) +
      scale_shape_manual(values = c(1,2,0,5))

然而,这只是将点变成全黑圆圈:

我之前用过scale_shape_manual()pch =没有任何问题,我很茫然

有什么想法吗?

谢谢,

J

你可以试试:

ggplot(data.scores, aes(x=NMDS1, y=NMDS2, group=Location,fill=Time,color=Time)) +
  geom_point(aes(shape=Location,color=Time),size=3,stroke = 1)+
  scale_shape_manual(values = c(21:24))+ 
  scale_fill_manual(values=c('red','pink','green','blue'))+
  scale_color_manual(values=c('red','pink','green','blue'))

也试试这个来解决你的主要问题:

ggplot(data.scores, aes(x=NMDS1, y=NMDS2, group=Time,fill=Time,color=Time)) +
  geom_point(aes(shape=Location),colour = "black", size = 4)+
  geom_point(aes(shape=Location,color=Time),size=3)+
  scale_shape_manual(values = c(21:24))+ 
  scale_fill_manual(values=c('red','pink','green','blue'))+
  scale_color_manual(values=c('red','pink','green','blue'))

Shape aesthetic specifications 是你的朋友。具体来说,shape = 21:

library(ggplot2)

ggplot(data.scores, aes(NMDS1, NMDS2, fill = Location)) +
  geom_point(shape = 21, size = 5)

reprex package (v0.3.0)

于 2020 年 7 月 2 日创建