2012-12-05 30 views
23

ggplot2と積み上げ棒グラフ

Division Year OperatingIncome 
1 A 2012   11460 
2 B 2012   7431 
3 C 2012   -8121 
4 D 2012   15719 
5 E 2012    364 
6 A 2011   12211 
7 B 2011   6290 
8 C 2011   -2657 
9 D 2011   14657 
10 E 2011   1257 
11 A 2010   12895 
12 B 2010   5381 
13 C 2010   -2408 
14 D 2010   11849 
15 E 2010    517 

にはどうすれば負の値が含まれてggplot2で積み上げ棒グラフを完了していますか?ここで私が使用している基本的なチャート・シーケンスです:

ggplot(income_m, aes(x=Year, y=OperatingIncome, fill=Division)) + geom_bar() + 
+ scale_fill_brewer(type = "seq", palette = 1) 

これはエラーを返します。

Warning message: Stacking not well defined when ymin != 0

、代わりに予想される結果の - 負の値がX軸の下に表示されている - 彼らは単に存在しません積み上げ棒グラフに表示されます。正と負のすべての値を考慮してチャートを作成する方法はありますか?

+0

あなたが探していますこのようなものhttp://stackoverflow.com/questions/12312189/r-floating-barchart/12312457#12312457 – mnel

+0

このような感じです:http://www.infragistics.com/uploadedImages/Content/Products/ASPNET/Whats_new/PositiveNegativeStackChartWeb .png – sogrady

答えて

45

更新ggplot2 2.2.0のように、負の値のスタッキングは、正および負の値のための別個の層を作成することなく、自動的に処理されます。

私はあなたが探しているものを理解していれば、トリックが別々の層に2つの正と負のデータを入れて、またstat = "identity"を使用することです:

dat <- read.table(text = " Division Year OperatingIncome 
1 A 2012   11460 
2 B 2012   7431 
3 C 2012   -8121 
4 D 2012   15719 
5 E 2012    364 
6 A 2011   12211 
7 B 2011   6290 
8 C 2011   -2657 
9 D 2011   14657 
10 E 2011   1257 
11 A 2010   12895 
12 B 2010   5381 
13 C 2010   -2408 
14 D 2010   11849 
15 E 2010    517",header = TRUE,sep = "",row.names = 1) 

dat1 <- subset(dat,OperatingIncome >= 0) 
dat2 <- subset(dat,OperatingIncome < 0) 
ggplot() + 
    geom_bar(data = dat1, aes(x=Year, y=OperatingIncome, fill=Division),stat = "identity") + 
    geom_bar(data = dat2, aes(x=Year, y=OperatingIncome, fill=Division),stat = "identity") + 
    scale_fill_brewer(type = "seq", palette = 1) 

enter image description here

+0

ちょうど私が欲しいもののように見える、ありがとう! – sogrady

関連する問題