提问人:John J. 提问时间:10/23/2018 更新时间:10/23/2018 访问量:1960
如何使用分组 ggplot 中包含颜色名称的变量分配颜色?
How to assign colors using a variable containing color names in a grouped ggplot?
问:
在这个简单示例中,我创建了一个包含颜色名称的变量。
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)
如果我想使用 geom_line 创建三条线(绿色、蓝色和红色)怎么办?
ggplot(df, aes(wt, mpg, group=cyl)) +
geom_line(color = df$color)
如何使用带有颜色名称的变量来分配不同线条的颜色?
答:
0赞
Richard J. Acton
10/23/2018
#1
您可以使用自定义色阶:
ggplot(df, aes(wt, mpg, group=cyl)) +
geom_line(aes(color = color)) +
scale_color_manual(values = c("blue"="blue","red"="red","green"="green"))
-1赞
bob1
10/23/2018
#2
简短的回答:你不能。您已设置变量以设置您创建的变量中的颜色。
但是,默认情况下有一种方法可以执行此操作: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()
省略了线位...
5赞
markus
10/23/2018
#3
我想你正在寻找scale_color_identity
ggplot(df, aes(wt, mpg)) +
geom_point(aes(color = color)) +
scale_color_identity(guide = "legend") # default is guide = "none"
这是相应的折线图
ggplot(df, aes(wt, mpg)) +
geom_line(aes(color = color)) +
scale_color_identity(guide = "legend")
评论
1赞
John J.
10/23/2018
很好。scale_identity() 是我缺失的一步。非常感谢。
评论