【发布时间】:2017-05-01 16:46:54
【问题描述】:
我正在尝试改变 R 图中 LINE 的颜色(在同一系列数据中)。例如,如果您有显示一年中几周温度的点,并且它们与geom_line() 或等价物相连,我将如何显示这条线在较高温度的几周内呈深红色,而在较冷的几周内逐渐变为黄色?
(如果点和线都可以基于相同的变量在相同的调色板/渐变中变化 - 比如温度,那将是理想的)。
bp.df <- NULL
bp.weeks <- 26
bp.days <- 7 * bp.weeks
bp.df$day <- 1:bp.days
bp.df$week <- ceiling(bp.df$day / 7)
bp.mean.normal <- 100
bp.sd.normal <- 20
bp.df <- as.data.frame(bp.df)
bp.df$normal <- rnorm(nrow(bp.df),bp.mean.normal, bp.sd.normal)
bp.df$day <- as.numeric(bp.df$day)
# make sure ggplot2 is installed and loaded
g <- ggplot(bp.df, aes(x = day, y = normal, color = normal)) +
geom_point() +
geom_line(col = bp.df$normal)
g
为什么线条颜色与“正常”变量的级别不匹配?我知道,因为它们连接两个点,所以线条必须“决定”使用哪个值,但是这个输出似乎使颜色完全随机。
如果在渐变中变化不起作用,我如何让这条线在前 50 天为红色,在接下来的 50 天为绿色,等等?
【问题讨论】:
-
它确实匹配;它使用
normal的值作为段的最左侧点,因为这是您通过aes传递的向量。要使颜色每 50 天变化一次,请添加一个变量以作为颜色美学传递,例如ggplot(bp.df, aes(x=day, y = normal, color = cut(day, seq(0, 200, 50)))) + geom_point() + geom_line() -
谢谢,这个和下一条评论明确地澄清了我的困惑。显然,一个单独的变量对于驱动颜色是有意义的。
标签: r graph ggplot2 colors gradient