2012-12-05 19 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 कि ऋणात्मक मानों शामिल में एक स्टैक्ड बार चार्ट को पूरा करते हैं? ऋणात्मक मानों एक्स अक्ष नीचे प्रदर्शित किया जा रहा - - वे बस मौजूद नहीं हैं

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 के रूप में, ऋणात्मक मानों के लिए stacking धनात्मक और ऋणात्मक मानों के लिए अलग परतों बनाए बिना स्वचालित रूप से नियंत्रित किया जाता है,।

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