如何在geom_smooth中为代表不同组成员关系的线条设置不同的颜色

问题描述 投票:0回答:1

我的组变量(group_var)有两个级别。我制作了一个散点图,其中“Y”=蓝色,“N”=红色。由于我有很多点,如果我没有在

geom_smooth
参数中为线条设置颜色,则很难从红色和蓝色点云中挑选出两条线(红色和蓝色)。

为了使它们更明显,我尝试在下面的代码中将线条涂成黑色。然而,现在你无法分辨哪一行是“Y”组,哪一行是“N”组。

data %>% ggplot(aes(ind_var ,dep_var, color = group_var)) + geom_point(alpha = 0.5, size = 2) + geom_smooth(aes(group=group_var), method = "lm", color = "black", size = 0.5)

有没有办法让两条线的颜色不同?例如。 “Y”表示深蓝色,“N”表示深红色。 我只找到了有关如何更改两条线的颜色的资源,而不是如何单独设置每条线的颜色。

r ggplot2 graph scatter-plot aesthetics
1个回答
0
投票

有多种选择可以实现您想要的结果,例如您可以对点使用

fill
aes,这样可以为线指定不同的
color
。我在下面进行的另一个选择是增加映射到
color
上的类别数量,即我将
group_var
映射到
paste(group_var, "line", sep = "_")
内的
color
aes 上,而不是
geom_smooth
。这样我们就可以为线和点设置不同的颜色,并为其设置不同的类别。

当然,这种方法是否会重复图例条目的数量,并且根据您想要的结果需要对图例进行一些额外的调整。

使用一些基于

iris
的虚假示例数据:

library(dplyr, warn = FALSE)
library(ggplot2)

data <- iris |>
  select(ind_var = Petal.Length, dep_var = Petal.Width, group_var = Species)

data %>%
  ggplot(aes(ind_var, dep_var, color = group_var)) +
  geom_point(alpha = 0.5, size = 2) +
  geom_smooth(
    aes(
      group = group_var,
      color = paste(group_var, "line", sep = "_")
    ),
    method = "lm",
    size = 0.5
  ) +
  scale_colour_manual(
    values = c(
      "lightblue", "darkblue",
      "tomato", "firebrick",
      "lightgreen", "darkgreen"
    )
  )
#> Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
#> ℹ Please use `linewidth` instead.
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.
#> `geom_smooth()` using formula = 'y ~ x'

© www.soinside.com 2019 - 2024. All rights reserved.