2011-08-25 11 views
30

मैं एक बार साजिश बनाना चाहता हूं जहां मूल्यों में से एक मूल्य अन्य सभी मूल्यों से कहीं अधिक बड़ा है। क्या एक असंतुलित वाई-अक्ष होने का कोई तरीका है? - 500ggplot2 का उपयोग करके, क्या मैं अक्ष में ब्रेक डाल सकता हूं?

df <- data.frame(a = c(1,2,3,500), b = c('a1', 'a2','a3', 'a4')) 

p <- ggplot(data = df, aes(x = b, y = a)) + geom_bar() 
p <- p + opts(axis.text.x=theme_text(angle= 90, hjust=1)) + coord_flip() 
p 

enter image description here

वहाँ एक रास्ता है कि मैं 1- 10, तो 490 से मेरी अक्ष रन बना सकते हैं है: मेरे डेटा प्रकार है? मैं डेटा को प्लॉट करने के किसी भी अन्य तरीके के बारे में नहीं सोच सकता (इसे बदलने से अलग, जिसे मैं नहीं करना चाहता)

+3

मुझे नहीं लगता है कि आप ggplot2 में टूट जाता है लागू कर सकते हैं। एक विकल्प 'लॉग' स्केल का उपयोग करना होगा जो ग्राफ को पढ़ने में आसान बना देगा। – Ramnath

+0

मुझे एहसास है कि यह लॉग पैमाने पर पढ़ने में आसान बना देगा, लेकिन मैं इस तरह से जानकारी नहीं दिखाना चाहता, क्योंकि छोटे मूल्यों में महत्वपूर्ण भिन्नता है जो उन्हें परिवर्तित होने पर छुपाया जाएगा। – djq

+3

'facales_wrap() 'के संयोजन के बारे में क्या है' scales =" free_x "' – Chase

उत्तर

30

जैसा कि कहीं और उल्लेख किया गया है, यह ऐसा कुछ नहीं है जो ggplot2 अच्छी तरह से संभाल लेंगे, क्योंकि टूटी अक्ष को आम तौर पर संदिग्ध माना जाता है।

अन्य रणनीतियों को अक्सर इस समस्या के बेहतर समाधान माना जाता है। ब्रायन ने कुछ उल्लेख किया (पहलू, मूल्यों के विभिन्न सेटों पर ध्यान केंद्रित करने वाले दो भूखंड)। एक अन्य विकल्प है कि लोगों को भी अक्सर नजरअंदाज barcharts लिए विशेष रूप से, एक तालिका बनाना है:

enter image description here

वास्तविक मान को देखते हुए, 500 अन्य मूल्यों में मतभेद अस्पष्ट नहीं है! कुछ कारणों से टेबल को विज़ुअलाइजेशन तकनीक के रूप में पर्याप्त सम्मान नहीं मिलता है। आप ऑब्जेक्ट कर सकते हैं कि आपके डेटा में कई, कई श्रेणियां हैं जो तालिका में अनावश्यक हो जाती हैं। यदि ऐसा है, तो संभव है कि आपके बार चार्ट में भी समझदार होने के लिए बहुत सारे बार होंगे।

और मैं समय सभी तालिकाओं के लिए बहस नहीं कर रहा हूं। लेकिन वे निश्चित रूप से कुछ विचार करने के लिए हैं यदि आप अपेक्षाकृत कुछ सलाखों के साथ बरकरार बना रहे हैं। और यदि आप बरकरारों के साथ बरकरार बना रहे हैं, तो आपको वैसे भी पुनर्विचार करना पड़ सकता है।

अंत में, axis.breakplotrix पैकेज में फ़ंक्शन भी है जो टूटी अक्ष को लागू करता है। हालांकि, जो मैं इकट्ठा करता हूं उससे आपको हाथ से लेबल अक्षरों और पदों को निर्दिष्ट करना होगा।

+0

जोरन, मेरे पास इस प्रकार की साजिश का उपयोग करने के बारे में मिश्रित भावनाएं हैं। आप सही हैं - एक टेबल शायद यह दिखाने का सबसे अच्छा तरीका है। – djq

+0

@celenius - मुझे प्रचार करने का मतलब नहीं था या जैसे मैं आपको डांट रहा था। मुझे लगता है कि टेबलों को ज्यादा प्यार नहीं मिलता है, और कभी-कभी मैं इसके बारे में काम करता हूं। ;) – joran

+0

मुझे डांट नहीं लग रहा था! यह सिर्फ एक का उपयोग करने के लिए मेरे पास नहीं हुआ .... – djq

21

नहीं, ggplot का उपयोग नहीं कर रहा है। http://groups.google.com/group/ggplot2/browse_thread/thread/8d2acbfc59d2f247 पर धागे में चर्चा देखें जहां हैडली बताती है कि यह क्यों संभव नहीं है लेकिन सुझाए गए विकल्प (पहलूदार प्लॉट, सभी डेटा के साथ एक, एक विशेष क्षेत्र में ज़ूम किया गया) देता है।

1

मुझे संदेह है कि आर में शेल्फ से कुछ भी है, लेकिन आप डेटा को 3 डी आंशिक क्यूब्स की श्रृंखला के रूप में दिखा सकते हैं। 500 केवल 5 * 10 * 10 है, इसलिए यह अच्छी तरह से स्केल करेगा। सटीक मान एक लेबल हो सकता है।

शायद यह केवल तभी उपयोग किया जाना चाहिए यदि किसी कारण से ग्राफिक प्रतिनिधित्व हो।

19
ggplot साथ नहीं

, लेकिन plotrix साथ आप आसानी से ऐसा कर सकते हैं:

library(plotrix) 
gap.barplot(df$a, gap=c(5,495),horiz=T) 
5

नहीं, दुर्भाग्य से नहीं

डर है कि अनुमति देता है असंतत कुल्हाड़ियों दर्शकों के छल के लिए नेतृत्व करेंगे है। हालांकि, ऐसे मामले हैं जहां नहीं है, एक असंतुलित अक्ष विरूपण की ओर ले जाती है।

उदाहरण के लिए, यदि धुरी काटा जाता है, लेकिन आमतौर पर कुछ अंतराल (कहें [0,1]) के भीतर होता है, तो दर्शक डेटा के बारे में छेड़छाड़ नहीं कर सकते हैं और विकृत निष्कर्ष निकाल सकते हैं। इस मामले में, एक स्पष्ट निरंतर धुरी अधिक उपयुक्त और पारदर्शी होगी।

की तुलना करें:

Example of good use of continuous vs discontinuous axis

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

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