2017-08-11 16 views
0

IがRでこのステートメントが着色しない。Rプロットは、着色された点をプロットしますが、行

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

をこれは、1つのプロット上の時系列データの五つの異なるグラフ(subset1$runの値に対して1つずつ)生成しますポイント付き5色展開。しかし

、私はラインを取得するために、この操作を行います。私は代わりに5色の黒の各データ系列でプロットを得る

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 

同じプロット上の2つのデータ系列があるはずです:
データシリーズ1:(1,2)、(2,4)、( 3,3)
データシリーズ2:(1,5)、(2,2)、(3,7)

Iポイント(type="b")、データ系列1及びデータ系列2を使用する場合、何が起こるすることです異なる色をします。
私が行(type="l")を使用している場合、データ系列1とデータ系列2は両方とも黒色になります

+1

実際に 'subset1'が何であるか知らなくても、言い難いビットです。あなたは 'dput'を使ってファイルの塊を提供できますか? – thelatemail

+1

[mcve] –

答えて

0

私はあなたに合ったら、2つのデータ系列をプロットしたいと思います。しかし、type='b'の場合、ポイントに影響を与えるcol引数を使用して1つのデータ系列をプロットしています。

また、使用しているサンプルデータが、plotコマンド(net.tripsと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

を確認してください。プロットするシリーズが3つ以上ある場合はどうなりますか? subset1 $でレベルが決定された系列がn個ある場合はどうなりますか?これを行うための関数を書くことができますか(おそらく、同じ数の行でプロットするためにデータ系列のリストを取るでしょうか)? – user9885

+0

私は自分の答えを編集し、それがどのように機能するかを説明しました。 – smoff

関連する問題