2012-11-13 12 views
5

ベクトルdataをプロットしようとしています。 plot(data, type="h")は私が欲しいものを正確に行うので、これはいつも簡単です。しかし、色に問題があります。 、私が見たいと思って何ヒストグラムのようなスタイルでR

data = c(1,2,2,3,1,1,2,3,1,2,2,3, ...) 

1が異なる色と同様に、各3に1色、各2にプロットされていることである:私のベクトルdataは、このようになります。ように私は

plot(data, type="h", col=c("red","blue","green") 

有することを達成しようとしたが、それは色ベクトルをループRで失敗し、最初のバーは赤色であるように、青色第二、第三の緑色、第赤再び。私dataベクトルは常に数字123から構成されていないため

私は非常に、一般的な解決策でinteresstedています。ベクトルが1から6までの数を保持するケースは多いです。

誰もこの問題の解決方法を知っていますか?

答えて

11

あなたはこのように、同じ長さの色のベクトルを作成する必要があります:

data = c(1,2,2,3,1,1,2,3,1,2,2,3) 
colors = c("red","blue","green") 
plot(data, type="h", col=colors[data]) 

colors[data]がどのように見えるので、これは動作します:

print(colors[data]) 
# [1] "red" "blue" "blue" "green" "red" "red" "blue" "green" "red" 
# [10] "blue" "blue" "green" 
+0

これをどのようにデータの範囲に適用できますか?例えば、私は-100と100の間にあるものを赤色に、それ以外は青色にしたいと思っていますか? – user1007742

+0

@ user1007742: 'mydatacut = cut(x、c(-Inf、-100,100、Inf))'を除算するには 'cut'を使います。これは、3つのレベルの要素を作成します。次に、 'colors [as.numeric(mydatacut)]'を実行できます。ここで、factorは、例では 'c(" blue "、" red "、" blue " –

6

が一般的な方法のためにこれを試してみてください。

data = c(1,2,2,3,1,1,2,3,1,2,2,3,4,5,6,7,12,3) 
colors = rainbow(length(unique(data))) 
plot(data, type="h", col=colors[data]) 
0
colors = rainbow(length(unique(data))); 
hist(data, col=colors[data]) 

mr。 lapalmeさんのデータ(上)

関連する問題