R - 用于ggplot中连续数据的离散颜色

时间:2015-08-07 15:18:28

标签: r ggplot2

我试图绘制一些时间连续的数据。我已经应用了一个简单的算法,为每行数据分配一个离散数字(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)在图例中显示未使用的值

当前代码生成的图片: Current output

1 个答案:

答案 0 :(得分:1)

已在评论中答复

通过aes(x = time, y = flow, color = factor(state), group = 1)进行分组可以防止在将状态转换为因子时画出单独的线。