2017-08-11 125 views
0

我在读该语句:在一个情节[R情节将绘制彩色点,但没有彩色线条

plot(net.trips~step, data=subset1, main="Speed = 1.60",type="b", col=subset1$run) 

它将产生的时间序列数据的五个不同的图形(每一个为subset1$run值)在五个不同的颜色与点。

然而,当我这样做让行:

plot(net.trips~step, data=subset1, main="Speed = 1.60",type="l", col=subset1$run) 

我与每个数据系列的黑色,而不是五种不同颜色的曲线图。

为什么会发生这种情况,我该如何纠正它?

这里是我熟了一些示例数据:

RUN STEP NUM.TRIPS 
1  1  2 
1  2  4 
1  3  3 
2  1  5 
2  2  2 
2  3  7 

应该有在相同的情节两个数据系列:
数据系列1:(1,2),(2,4),( 3,3)
数据系列2:(1,5),(2,2),(3,7)

什么情况是,如果使用点(type="b"),数据序列1及数据序列2会有不同的颜色。
如果我使用线条(type="l"),数据系列1和数据系列2都将是黑色的

+1

如果不知道“subset1”实际上是什么,就很难说。你能通过'dput'提供一个文件块吗? – thelatemail

+1

请检查[mcve] –

回答

0

如果我找不到您想要的图形,请绘制两个数据系列。但是,您正在做的是使用col参数绘制一个数据系列,这会影响点数,如果type='b'

此外,如果您的示例数据与您在plot命令(net.trips vs. num.trips)中使用的示例数据不同,使用colnames会产生混淆。

你可以写一个function,将您的数据拆分成子数据集,并绘制一条线每个:

subset1 <- data.frame(
      run = c(1,1,1,2,2,2), 
      step = c(1,2,3,1,2,3), 
      net.trips = c(2,4,3,5,2,7) 
      ) 

plot.subdata <- function(x){ 
    # create an "empty" plot first 
    plot(net.trips~step, data=x, type="n", main="Speed = 1.60") 

    # and fill it with dataseries subsetted by run 
    for(n in unique(x$run)){ 
    lines(net.trips~step, data = subset(x, x$run == n), col = n) 
    } 
} 

plot.subdata(subset1) 

这不是最优雅的方式,但它会奏效。

+0

如果有两个以上的系列绘图,该怎么办?如果有n个系列确定了subset1 $ run中的级别,该怎么办?我可以写一个函数来做到这一点(也许采取一系列数据序列来绘制相同的行数)? – user9885

+0

我编辑了我的答案并解释了这可能如何工作。 – smoff