2017-08-11 128 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