有没有更好的方法来绘制R中的多色线而不是分割数据?

时间:2014-03-17 04:22:19

标签: r

我的时间序列的连续部分处于不同的处理状态,我想分别为连接每个部分的观察结果着色。

例如,在处理A的系列中,我有一条红线,在接下来的处理B系列中,我有一条蓝线。

plot(response, type="l",col="treatment")失败 - 所有观察都用相同颜色的线连接。

此listhost发布建议只是通过处理拆分数据,然后在同一个图上单独绘制每个子集。 (http://r.789695.n4.nabble.com/Can-R-plot-multicolor-lines-td791081.html)。

有更优雅的方式吗?

2 个答案:

答案 0 :(得分:3)

使用Map的替代方法可避免手动绘制细分:

dat <- data.frame(treatment=rep(LETTERS[1:2],3:4),
                  response=c(6,5,2,1,5,6,7),time=1:7)

plot(response ~ time, data=dat, type="n")
Map(
  function(x) lines(response ~ time, data=x, col=x$treatment),
  split(dat, dat$treatment)
)

enter image description here

答案 1 :(得分:1)

有两种流行的更优雅的方式。一种是使用ggplot2包。没有更多信息,除了在各个地方查看帮助或示例之外,很难为您提供建议。另一种是检查函数matplot。这将要求您首先将数据重组为矩阵,但它可以轻松地执行您想要的操作。请记住,虽然它在帮助中说,&#34;将一个矩阵的列绘制在另一个矩阵的列上,#x轴; x轴矩阵可以是一个与包含你的矩阵的一列相同长度的向量线路信息。该函数将只回收x向量。