如何更改geom_point中的颜色或ggplot中的线条[重复]

Posted

技术标签:

【中文标题】如何更改geom_point中的颜色或ggplot中的线条[重复]【英文标题】:how to change the color in geom_point or lines in ggplot [duplicate] 【发布时间】:2021-11-27 22:07:47 【问题描述】:

我有这样的数据

data<- structure(list(sample = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("A", 
"B"), class = "factor"), y = c(0.99999652, 0.99626012, 0.94070452, 
0.37332406, 0.57810894, 0.37673758, 0.22784684, 0.35358141, 0.21253558, 
0.17715703, 0.99999652, 0.86403956, 0.64054516, 0.18448824, 0.40362691, 
0.10791682, 0.06985696, 0.07384465, 0.0433271, 0.02875159), time = c(100L, 
150L, 170L, 180L, 190L, 220L, 260L, 270L, 300L, 375L, 100L, 150L, 
170L, 180L, 190L, 220L, 260L, 270L, 300L, 375L), x = c(0.9999965, 
0.9981008, 0.9940164, 1.0842966, 0.9412978, 1.0627907, 0.9135079, 
1.1982235, 0.9194105, 0.9361713, 0.9999965, 1.0494051, 0.9526752, 
1.1594711, 0.9827104, 1.0223711, 1.1419197, 1.0328598, 0.6015229, 
0.3745817)), .Names = c("sample", "y", "time", "x"), class = "data.frame", row.names = c(NA, 
-20L))

我有兴趣用黑色和红色这样的服装颜色来绘制它

我可以像这样用两种随机不同的颜色来绘制它,但问题是

ggplot() + 
geom_point(data = data, aes(x = time, y = y, color = sample),size=4)

如果我想将第一个 (A) 分配给黑色,将 (B) 分配给红色。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

我会这样做(你也可以使用十六进制颜色代替红色、黑色)

data <- data %>% 
  mutate(Color = ifelse(sample == "A", "black",
                 ifelse(sample == "B", "red", "none")))

ggplot() + 
  geom_point(data = data, aes(x = time, y = y, color = Color),size=4)+
  scale_color_identity()

【讨论】:

这非常不是推荐的使用ggplot的方式。 如果我错了,请纠正我,但我相信这里不需要 fill 美学。 Bdemarest 我不确定最大的问题是什么。如果你要批评,你至少可以解释原因。在我看来,如果我使用数据框制作一堆不同的图表,它只会让我免于大量输入/指定颜色。 Mike H,你说得对,我最近制作了很多地图,而且我已经习惯了指定不同的轮廓和填充颜色。【参考方案2】:

你可以使用scale_color_manual:

ggplot() + 
  geom_point(data = data, aes(x = time, y = y, color = sample),size=4) +
  scale_color_manual(values = c("A" = "black", "B" = "red"))


根据 OP 的评论,获得与您可以做的点颜色相同的线条:

ggplot(data = data, aes(x = time, y = y, color = sample)) + 
  geom_point(size=4) + 
  geom_line(aes(group = sample)) + 
  scale_color_manual(values = c("A" = "black", "B" = "red"))

【讨论】:

如果我也想做geom_line,scale_color_manual应该只用一次吗?例如红色的一条线和黑色的一条线 是的,你会做一次scale_color_manual,然后你的geom_line 看起来像:geom_line(aes(x = time, y = y, group = sample, color = sample)) 感谢 mike,这是一个很好的解决方案

以上是关于如何更改geom_point中的颜色或ggplot中的线条[重复]的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2中的颜色和填充参数有什么区别?

在geom_point中使用cut时如何在ggplot中添加椭圆

如何在 R 中的 ggplot2 中更改 geom_text 中的字体颜色?

更改 facet wrap ggplot 中的标签 [重复]

ggplot2:图例混合颜色和隐藏线用于预测图

带有形状、填充和颜色的 geom_point