2012-09-07 26 views
6

मैं बार चार्ट बनाना चाहता हूं जहां बार न्यूनतम निर्दिष्ट किया जा सकता है (बॉक्स में बॉक्स और व्हिस्कर प्लॉट की तरह)। क्या बारप्लॉट ऐसा कर सकता है? मुझे जवाब है ggplot में जवाब है, लेकिन मुझे एक उदाहरण नहीं मिल रहा है। यहाँ कुछ डेटा है:फ़्लोटिंग बरचार्ट्स

    X Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
1  Highest recorded 31.5 31.8 30.3 28.0 24.9 24.4 21.7 20.9 24.5 25.4 26.0 28.7 
2 Mean monthly maximum 27.8 28.6 27.0 24.8 22.0 20.0 18.9 18.8 20.4 22.4 23.9 26.8 
3 Mean daily maximum 24.2 24.8 23.1 20.9 18.4 16.3 15.5 15.7 16.9 18.3 20.0 22.4 
4     Mean 19.1 19.8 18.1 16.2 13.8 11.9 11.2 11.6 12.7 14.1 15.7 17.7 
5 Mean daily minimum 14.0 14.7 13.1 11.4 9.2 7.5 6.9 7.4 8.4 10.0 11.4 13.0 
6 Mean monthly minimum 7.6 9.1 6.8 3.8 2.3 -0.5 -0.2 1.0 2.3 3.7 5.3 6.7 
7  Lowest recorded 4.0 5.6 4.1 -1.3 0.0 -3.1 -2.6 -1.4 -0.8 2.0 2.7 4.1 

xaxis = c ("जे", "एफ", "एम", "A", "एम", "जे", "जे", "A", "एस", "ओ", "एन", "डी")

तो आदर्श रूप से, मैं प्रत्येक महीने के लिए एक स्टैक्ड बार के साथ समाप्त होता हूं, जो शून्य के बजाए 'सबसे कम दर्ज' मूल्य से शुरू होता है ।

मैंने भी उपयोगर पैकेज से सुपरबारप्लॉट के साथ प्रयास किया है। मैं जहां चाहूं शुरू करने के लिए सलाखों को प्राप्त कर सकता हूं, लेकिन एक्स अक्ष को साजिश के केंद्र से बाहर नहीं ले जा सकता। अग्रिम में धन्यवाद।

+0

+1 के लिए सहायता में एक उदाहरण मैं कभी-कभी geom_floatingbar की भी इच्छा करता हूं। –

+1

प्रेरणा के लिए यह प्रश्न देखें: http://stackoverflow.com/questions/12306469/ggplot2-size-and-placement-of-geom-line –

उत्तर

6

आप geom_boxplotggplot2 में और उपयोग कर सकते हैं क्या (मुझे लगता है कि) प्राप्त करने के लिए आप चाहते हैं precomputed मानों को निर्दिष्ट stat = 'identity' और geom_crossbar का उपयोग अन्य

# first, your data 
weather <- read.table(text = 'X Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
1  "Highest recorded" 31.5 31.8 30.3 28.0 24.9 24.4 21.7 20.9 24.5 25.4 26.0 28.7 
2 "Mean monthly maximum" 27.8 28.6 27.0 24.8 22.0 20.0 18.9 18.8 20.4 22.4 23.9 26.8 
3 "Mean daily maximum" 24.2 24.8 23.1 20.9 18.4 16.3 15.5 15.7 16.9 18.3 20.0 22.4 
4     "Mean" 19.1 19.8 18.1 16.2 13.8 11.9 11.2 11.6 12.7 14.1 15.7 17.7 
5 "Mean daily minimum" 14.0 14.7 13.1 11.4 9.2 7.5 6.9 7.4 8.4 10.0 11.4 13.0 
6 "Mean monthly minimum" 7.6 9.1 6.8 3.8 2.3 -0.5 -0.2 1.0 2.3 3.7 5.3 6.7 
7  "Lowest recorded" 4.0 5.6 4.1 -1.3 0.0 -3.1 -2.6 -1.4 -0.8 2.0 2.7 4.1', header =T) 


library(reshape2) 
library(ggplot2) 
# reshape to wide format (basically transposing the data.frame) 
w <- dcast(melt(weather), variable~X) 
ggplot(w, aes(x=variable,ymin = `Lowest recorded`, 
     ymax = `Highest recorded`, lower = `Lowest recorded`, 
     upper = `Highest recorded`, middle = `Mean daily maximum`)) + 
    geom_boxplot(stat = 'identity') + 
    xlab('month') + 
    ylab('Temperature') + 
    geom_crossbar(aes(y = `Mean monthly maximum`))+ 
    geom_crossbar(aes(y = `Mean monthly minimum`)) + 
    geom_crossbar(aes(y = `Mean daily maximum`))+ 
    geom_crossbar(aes(y = `Mean daily minimum`)) 

enter image description here

यह आंशिक रूप से वर्णन किया गया है में डालने के लिए geom_boxplot

संबंधित मुद्दे