R ts.plot():系列的顺序

时间:2012-09-20 01:29:22

标签: r plot

我有一个像

这样的数据框
    A   B   C   D   E   F
2003-07 445 48  1126    512 277 677
2003-08 429 77  1179    583 320 675
2003-09 421 80  1077    488 288 627

我想在同一个图表上绘制这些时间序列。我还希望A B C具有相同的颜色(蓝色)而其他颜色为黑色。所以我用

ts.plot(df,col=c(rep("blue",3),rep("black",3)))

这会创建正确的时间序列图,但颜色应用于错误的系列:ABC是蓝色和黑色的混合,因此是DE F.(请注意,如果是,则真实数据框有更多列问题的根源。)

ts.plot()使用什么顺序?

修改

df <- structure(list(X = structure(1:3, 
.Label = c("2003-07", "2003-08", "2003-09"), class = "factor"), 
 A = c(445L, 429L, 421L), B = c(48L, 77L, 80L),
 C = c(1126L, 1179L, 1077L), D = c(512L, 583L, 488L ), 
 E = c(277L, 320L, 288L), FF = c(677L, 675L, 627L)), 
.Names = c("X", "A", "B", "C", "D", "E", "FF"), 
class = "data.frame", row.names = c(NA, -3L))

1 个答案:

答案 0 :(得分:5)

ts.plot(df,col=c(rep("blue",3),rep("black",3)))

我认为它完全按照A-B-C-D-E-F的顺序进行绘图。 所以......

A     B     C     D     E     F
Blue  Blue  Blue  Black Black Black 

enter image description here

如果您匹配A / B / C的价值......

          A  B    C
2003-07 445 48 1126
2003-08 429 77 1179
2003-09 421 80 1077

...你会看到三条蓝线来自445->429->421&amp; 48->77->80&amp; 1126->1179->1077,实际上与您指定的内容相匹配。

顺便说一下,你可以简化你的情节调用:

ts.plot(df,col=rep(c("black","blue"),each=3))

...使用函数调用的each=部分。

EDIT ::

查看您的dput,您的图表似乎也会将您的标签df$X绘制为值1,2,3,因为它是factor,并且在此时被解释为打印。

尝试使用这段代码从原始图中删除标签,然后重新添加:

ts.plot(df[-1],col=c(rep("blue",3),rep("black",3)),gpars=list(xaxt="n"))
axis(1,labels=as.character(df$X),at=1:3)