如何使用分组 ggplot 中包含颜色名称的变量分配颜色?

Joh*_* J. 4 r ggplot2

在这个简单的示例中,我创建了一个包含颜色名称的变量。

df <- mtcars %>%
  mutate(color = "green",
     color = replace(color, cyl==6, "blue"),
     color = replace(color, cyl==8, "red"))
Run Code Online (Sandbox Code Playgroud)

运行下面的代码可以按预期工作。

ggplot(df, aes(wt, mpg)) +
  geom_point(color = df$color)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果我想使用 geom_line 创建三条线——绿色、蓝色和红色,该怎么办?

ggplot(df, aes(wt, mpg, group=cyl)) +
  geom_line(color = df$color)
Run Code Online (Sandbox Code Playgroud)

相反,我得到了三条颜色循环的线。 在此输入图像描述

如何使用带有颜色名称的变量来分配不同线条的颜色?

mar*_*kus 5

我想你正在寻找scale_color_identity

ggplot(df, aes(wt, mpg)) +
  geom_point(aes(color = color)) +
  scale_color_identity(guide = "legend") # default is guide = "none"
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这是各自的线图

ggplot(df, aes(wt, mpg)) +
  geom_line(aes(color = color)) +
  scale_color_identity(guide = "legend")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述