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

时间:2018-10-22 16:47:44

标签: r ggplot2

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

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

运行下面的代码可以正常工作。

ggplot(df, aes(wt, mpg)) +
  geom_point(color = df$color)

enter image description here

如果我想使用geom_line创建三行-绿色,蓝色和红色怎么办?

ggplot(df, aes(wt, mpg, group=cyl)) +
  geom_line(color = df$color)

相反,我得到三行颜色循环显示。 enter image description here

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

3 个答案:

答案 0 :(得分:3)

我认为您正在寻找scale_color_identity

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

enter image description here

这是各自的线图

ggplot(df, aes(wt, mpg)) +
  geom_line(aes(color = color)) +
  scale_color_identity(guide = "legend")

enter image description here

答案 1 :(得分:0)

您可以使用自定义色阶:

ggplot(df, aes(wt, mpg, group=cyl)) +
    geom_line(aes(color = color)) +
    scale_color_manual(values = c("blue"="blue","red"="red","green"="green"))

答案 2 :(得分:-1)

简短的回答:您不能。您已经设置了变量,可以在创建的变量中设置颜色。

但是,默认情况下,ggplot中有一种方法可以做到这一点:

mtcars$cyl <-as.factor(mtcars$cyl) ## set mtcars$cyl as factors (i.e use exact values in column)

ggplot(mtcars, aes(x=wt, y= mpg, color = cyl)) +
       geom_point()+
       scale_color_manual(breaks = c("8", "6", "4"),
                    values=c("red", "blue", "green"))+ ## adjust these if you want different colors
       geom_line()

将行留出...