2011-08-30 26 views
5

में बारप्लॉट में एक अद्वितीय ट्रेंड लाइन जोड़ना यह कल मेरे question से संबंधित है।GGPLOT2

तो यहां ggplot2 में बनाया गया डेटा और साजिश है।

df = data.frame(date=c(rep(2008:2013, by=1)), 
       value=c(303,407,538,696,881,1094)) 


ggplot(df, aes(date, value, width=0.64)) + 
     geom_bar(stat = "identity", fill="#336699", colour="black") + 
     ylim(c(0,1400)) + opts(title="U.S. Smartphone Users") + 
     opts(axis.text.y=theme_text(family="sans", face="bold")) + 
     opts(axis.text.x=theme_text(family="sans", face="bold")) + 
     opts(plot.title = theme_text(size=14, face="bold")) + 
     xlab("Year") + ylab("Users (in millions)") +   
     opts(axis.title.x=theme_text(family="sans")) + 
     opts(axis.title.y=theme_text(family="sans", angle=90)) + 
     geom_segment(aes(x=2007.6, xend=2013, y=550, yend=1350), arrow=arrow(length=unit(0.4,"cm"))) 

यह संभव ggplot2 के साथ निम्नलिखित ग्राफ में Squigly प्रवृत्ति लाइन का निर्माण करने के है

मैं आर में भूखंड बनाया था और उसके बाद एडोब फोटोशॉप में इसे prettied बनाया है, और होते, यदि मैं सोच रहा हूँ आर

यदि यह ggplot2 में नहीं किया जा सकता है, तो क्या कोई विशिष्ट आर पैकेज है जो इस कार्य के लिए उपयुक्त होगा?

मैं ग्राफ को पुन: उत्पन्न करने के बारे में नहीं पूछ रहा हूं। यह कोई मुद्दा नहीं है। बस प्रवृत्ति लाइन का उत्पादन एक मुद्दा प्रतीत होता है।

enter image description here

+0

क्या किसी भी तरह से बार के मूल्यों द्वारा गणितीय रूप से निर्धारित रेखा की वक्रता है? मुझे संदेह है कि छाया ggplot के साथ मिल सकती है, लेकिन अंत में एक तीर के साथ गणितीय परिभाषित वक्र होना चाहिए। –

+0

@ ब्रायन नहीं, यह गणितीय रूप से निर्धारित नहीं है। छाया बहुत महत्वपूर्ण नहीं है, सिर्फ यह कि रेखा एक सीधी रेखा नहीं है। – ATMathew

+3

यदि @ हैडली यहां थे तो मैं शर्त लगाता था कि वह कहेंगे कि वह उम्मीद करते हैं कि ggplot2 में यह संभव नहीं है। – joran

उत्तर

8

के रूप में सभी टिप्पणियों प्रति: टेढ़ा-मेढ़ा लाइन के बाद से यह डेटा के सांख्यिकीय मॉडल पर आधारित नहीं है, वैज्ञानिक रूप से संदिग्ध है। (और ऐसा लगता है कि जब डेटा ऐसी कोई चीज़ नहीं दिखाता है, तो स्मार्टफोन उपयोगकर्ताओं की संख्या कम हो रही है।) तो सबसे अच्छी सलाह है "इसे न करें"।

चूंकि आप वास्तव में विचार पर उत्सुक लगते हैं, हां यह संभव है।

आप geom_line के साथ अपनी पसंद की कोई भी लाइन जोड़ सकते हैं। अपने इन्फोग्राफिक में मूर्ख रेखा को दोहराने के लिए, आप इसे सीधे चलने के लिए एक सीधी रेखा और एक साइन वक्र कर सकते हैं। अपने भूखंड मान लिया जाये कि नामित किया गया था p

p + geom_line(
    aes(date, value), 
    data = data.frame(
    date = seq(2008, 2013, length.out = n), 
    value = seq(600, 1300, length.out = n) + 100 * sin(seq(0, 4 * pi, length.out = n)) 
), 
    arrow = arrow(length = unit(0.4, "cm")) 
) 

एक बेहतर दृष्टिकोण एक लेस समतल वक्र उपयोग करने के लिए किया जाएगा।

p + geom_smooth(method = "loess", se = FALSE) #maybe also span = 0.5, for extra wigglyness. 
+0

+1 जो उत्तर देता है उसके लिए +1 –

3

आपके प्रश्न का उत्तर स्पष्ट रूप से है: आर आर के साथ ऐसा न करें इसके लिए अनुकूलित नहीं किया गया है। यदि आप कुछ वेक्टर ग्राफिक्स प्रोग्राम का उपयोग करते हैं तो आप जो चाहते हैं उससे तेज़ी से और करीब आ जाएंगे। इलस्ट्रेटर, इंकस्केप (फ्री) या जो भी ग्राफिक्स टूल आपको पसंद है उसका प्रयोग करें। हो सकता है कि आप आर में ग्राफ बनाना और बाद में उन कार्यक्रमों में से किसी एक में संशोधित करना चाहते हैं।

मैं टिप्पणियों को समझ सकता हूं और यह भी सहमत हूं कि यह ग्राफ कुछ परीक्षण पास नहीं करता है। न केवल अकादमिक परीक्षण, बल्कि नब्बे-टेस्ट-इन-द-नॉट-न-नॉट-न-नस्लों-टेस्ट। एडवर्ड टुफेट का यह संदर्भ सौंदर्य कारणों से भी था। हालांकि मुझे लगता है कि यह एक कानूनी सवाल है जो नीचे दिए गए वोट के लायक नहीं है क्योंकि ग्राफ बदसूरत दिखता है। कभी-कभी शिक्षाविदों को अकादमिक पत्रिकाओं और ग्राफिक्स के बाहर प्रकाशित सामग्री को जनता के लिए संपादकों द्वारा संपादित करने की आवश्यकता होती है। तो अग्रिम में जानना - आर के साथ ऐसी चीजें करने की कोशिश न करें, उल्लेखनीय हो सकता है।

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