R で ggplot2 を使用して積み上げ棒グラフを作成し、y 軸に関する特定の棒を並べています。
# create reproducible data
library(ggplot2)
d <- read.csv(text='Day,Location,Length,Amount
1,4,3,1.1
1,3,1,2
1,2,3,4
1,1,3,5
2,0,0,0
3,3,3,1.8
3,2,1,3.54
3,1,3,1.1',header=T)
ggplot(d, aes(x = Day, y = Length)) + geom_bar(aes(fill = Amount, order = Location), stat = "identity")
ggplot(d, aes(x = Day, y = Length)) + geom_bar(aes(fill = Amount, order = rev(Location)), stat = "identity")
最初の ggplot プロットは、Location の順にデータを表示します。Location=1 が x 軸に最も近く、Location の値が増加するたびにデータが次の値に積み上げられます。
2 番目の ggplot プロットはデータを異なる順序で表示しますが、x 軸に最も近い最も高い Location 値を持つデータを、次に高い Location のデータを x 軸の位置から 2 番目に積み上げることはしません。以前の投稿に基づいて期待されるように、最初の棒の列。
この次のスニペットはデータを望ましい方法で示していますが、これは単純で小さなサンプル データ セットの成果物だと思います。積み上げ順は指定されていないので、ggplotはAmountの値に基づいて積み上げていると思います。
ggplot(d, aes(x = Day, y = Length)) + geom_bar(aes(fill = Amount), stat = "identity")
私が望むのは、ggplot が Location 値の減少順にデータをスタックするように強制することです (Location=4 は x 軸に最も近く、Location=3 は次に、...、および Location=1 はバー列の一番上にあります)。order =
または同等の引数を呼び出します。何か考えや提案はありますか?
数字しか扱っていないので簡単そうです。(x 軸から離れるにつれて) 数値が減少する列に対応する方法でデータをスタックするように ggplot に依頼することは、それほど難しいことではありません。