我试图绘制一些时间连续的数据。我已经应用了一个简单的算法,为每行数据分配一个离散数字(state
)。它看起来像这样。
time flow pre state
0.0 0.0 3 1
0.2 0.01 4 1
0.4 0.10 10 2
0.6 -0.11 -2 0 # Set as NA in the example below
现在,我想绘制实例流(使用ggplot
)并让state
确定颜色。问题是,如果我这样做
ggplot(data) +
geom_line(aes(x = time, y = flow, color = state))
图中颜色的对比度太小,无法轻易区分state
。但是如果我做的话
ggplot(data) +
geom_line(aes(x = time, y = flow, color = factor(state))) +
scale_color_manual(values = c("red", "green", "blue"))
它分割线条,它们显示为三条不同的线条。我想要的是使用连续比例,但添加一个或几个中间颜色的对比度。目前的解决方案就是这个
ggplot(data = alg1) +
geom_line(aes(x = time, y = flow, colour = state)) +
scale_color_gradient(low = "#0000FF", high = "#FF0000",
na.value = "#00FF00", guide = "legend")
但这1)仅适用于三种状态,其中一种必须为NA
,2)从图例中排除一种状态(NA
),3)在图例中显示未使用的值
答案 0 :(得分:1)
已在评论中答复
通过aes(x = time, y = flow, color = factor(state), group = 1)
进行分组可以防止在将状态转换为因子时画出单独的线。