2017-05-19 10 views
0

私はこの問題の答えを見つけることができなかったので、私はそれを掲示しています。Rに積み重なった棒グラフを注文するには?

私は私が私のデータ今

で異なる値の発生を比較するために使用するスタックbarplotを持って、私は最大の合計値から始めて、降順でそれを注文したいと思います。私は、通常のbarplotsに使用する方法を使用してみました:

barplot(combined[order(combined, decreasing = T)], 
    horiz = T, 
    las=1, 
    xlim = c(0,60), 
    col = c('lightblue','darkblue')) 

が、それは正しくそれを注文する方法はありno longer stacked

あるbarplotを生成しますか?私はggplotでいくつかの解決策を見てきましたが、可能ならば標準のバープロットに固執することを好むでしょう。

ありがとうございます!

+0

さらにデータを追加してください – amonk

+0

このリンクもチェックしてください:http://thecoatlessprofessor.com/programming/creating-stacked-barplot-and-grouped-barplot-in-r-using-base-graphics-no- ggplot2/ – amonk

答えて

1

あなたの問題は、barplot()の内部にマトリックスを使用していることです。注文を使用してcombined[order(combined, decreasing=T)]を計算すると、結果はベクトルになります。あなたは、このコードを使用することができ、色は優先順位を持つことになるに関わらず、あなたの列を注文したい場合は:これは何

barplot(combined[,order(apply(combined, 2, max))]) 

が列(マージン2に機能max()を適用することで、余白1行になります)を使用します。次に、各列の最大値で配列された行列を作成します。

+0

ありがとうございました!これは完全に機能します。まさに私が探していたもの。 – Pixeluz

+0

うれしい私は助けることができました!正しい答えを選ぶことを忘れないでください:) –

0

私は

barplot(data[order(data[,1],decreasing=FALSE),][,1],names.arg=data[order(data[,1],decreasing=FALSE),][,2], horiz = TRUE) 

enter image description here

順にbarplotを生成するために、今すぐ

num <- c(1, 8, 4, 3, 6, 7, 5, 2, 11, 3) 
cat <- c(letters[1:10]) 
data <- data.frame(num, cat) 

方法を説明するために、次の例を使用していますが、この例では、お役に立てば幸いです。

関連する問題