2012-12-05 4 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에 누적 가로 막 대형 차트를 작성합니까? 음수 값은 X 축 아래에 표시되는 - - 그들은 단순히 존재하지

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

대신 예상 된 결과의 :이 오류를 반환

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

: 여기에 내가 사용하고 기본 차트 순서입니다 누적 막 대형 차트 긍정적이고 부정적인 모든 가치를 가진 차트를 산출 할 수있는 방법이 있습니까?

+0

당신이 찾고있는 : 난 당신이 무엇을 찾고 있는지 이해한다면

는 트릭은 별도의 레이어에있는 두 개의 양극과 음극 데이터를 입력하고, 또한 stat = "identity" 사용하는 것입니다 이와 비슷한 것 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 현재, 음수 값 적층은 양 및 음 값에 대한 별도의 층을 만들 필요없이, 자동으로 처리된다.

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

관련 문제