我的时间序列的连续部分处于不同的处理状态,我想分别为连接每个部分的观察结果着色。
例如,在处理A的系列中,我有一条红线,在接下来的处理B系列中,我有一条蓝线。
plot(response, type="l",col="treatment")
失败 - 所有观察都用相同颜色的线连接。
此listhost发布建议只是通过处理拆分数据,然后在同一个图上单独绘制每个子集。 (http://r.789695.n4.nabble.com/Can-R-plot-multicolor-lines-td791081.html)。
有更优雅的方式吗?
答案 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)
)
答案 1 :(得分:1)
有两种流行的更优雅的方式。一种是使用ggplot2
包。没有更多信息,除了在各个地方查看帮助或示例之外,很难为您提供建议。另一种是检查函数matplot
。这将要求您首先将数据重组为矩阵,但它可以轻松地执行您想要的操作。请记住,虽然它在帮助中说,&#34;将一个矩阵的列绘制在另一个矩阵的列上,#x轴; x轴矩阵可以是一个与包含你的矩阵的一列相同长度的向量线路信息。该函数将只回收x向量。