web-dev-qa-db-ja.com

Rの部分的なカラーヒストグラム

enter image description here

写真のようなヒストグラムがあります。 2つの領域のバーをそれぞれ赤と緑に色付けします。つまり、0から左側の最初の黒い境界線までのバーを赤に色付けし、2番目の領域のバーを緑に色付けする必要があります。これはRで実行できますか?ヒストグラムを取得するために使用されるコードは

hist(pr4$x[pr4$x[,1]>-2,1],breaks=100)
15
darkage

これを行う最良の方法は、histに計算を許可してから、histを(再び)使用して実際のプロットを実行することです。次に例を示します。

set.seed(1)
x <- rnorm(1000)
h <- hist(rnorm(1000), breaks=50, plot=FALSE)
cuts <- cut(h$breaks, c(-Inf,-.5,1.75,Inf))
plot(h, col=cuts)

最後の行の.5と1.75は、異なる色にしたいしきい値です。

注:私の元の回答ではbarplotを使用していましたが、その戦略により、軸の操作が困難になります。

結果は次のとおりです。

enter image description here

24
Thomas

コメントで述べた方法は次のとおりです。

いくつかのテストデータを作成します(質問でこれを行う必要があります!)

test = runif(10000,-2,0)

rを取得してヒストグラムを計算しますが、プロットはしません。

h = hist(test, breaks=100,plot=FALSE)

ヒストグラムは3つの部分に分かれています。

ccat = cut(h$breaks, c(-Inf, -0.6, -0.4, Inf))

このパレットでプロットし、因子を数値に暗黙的に変換すると、パレットにインデックスが付けられます。

plot(h, col=c("white","green","red")[ccat])

coloured bars

ggplot2ソリューションも利用できます。

16
Spacedman

これを試して:

hist(pr4$x[pr4$x[,1]>-2,1],breaks=100, col = c(rep("white", 69), rep("green", 15), rep("red", 16)))

ヒストグラム内のブレークの数に応じて、各色の繰り返し数を調整する必要がある場合があります。

1
LearnR