R के साथ प्लॉटिंग के लिए, मुझे ggplot2 या ggvis सीखना चाहिए?


38

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


5
ggvis मछली की एक पूरी तरह से अलग केतली है। वास्तविक विकल्प ggplot और जाली के बीच है ।
गाला

1
मुझे लगता है कि उत्तर इस बात पर निर्भर करता है कि आप आखिर क्या हैं। यदि आप स्थैतिक उन्नत भूखंडों की तलाश कर रहे हैं, तो आप सीखना चाहेंगे ggplot2। वेब विज़ुअलाइज़ेशन के लिए, विचार करें ggvis
बजे रोमन लुसट्रिक

जवाबों:


39

Ggplot2 से शुरू करें। यह स्थैतिक भूखंड बनाता है।

स्टैटिक प्लॉट्स के अलावा, ggvis का इस्तेमाल इंटरएक्टिव प्लॉट्स बनाने के लिए भी किया जा सकता है। एक बार जब आपने ggplot2 का सिंटैक्स सीख लिया है, तो ggivs प्लॉट बनाने के लिए अन्तरक्रियाशीलता जोड़ने के लिए सिंटैक्स स्वाभाविक रूप से अनुसरण करेगा।


4
यह गलत है (शायद यह लेखन के समय सटीक था)। ggvis निश्चित रूप से स्थैतिक भूखंड बनाने के लिए इस्तेमाल किया जा सकता है। तथ्य यह है कि यह भी इंटरैक्टिव भूखंडों के लिए अनुमति देता है एक विशेषता है, एक सीमा नहीं। एक स्थिर कथानक का एक सरल उदाहरण:library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))
आंद्रे टेरा

47

मैं डायने कुक के जवाब पर थोड़ा विस्तार करना चाहता हूं। जैसा कि उसने कहा, ggplot2 स्थिर भूखंड बनाने के लिए है, ggvis इंटरैक्टिव भूखंडों के लिए है। इसके निहितार्थ का एक गुच्छा हैं:

फ़ाइल प्रकार ggvis आउटपुट HTML सीएसएस और जावास्क्रिप्ट फ़ाइलों सहित है। ggvis स्वाभाविक रूप से साधारण छवि फ़ाइलों का उत्पादन नहीं करता है। ggplot2 साधारण छवियों को आउटपुट करता है, जो तब HTML या PDF या gif या ई-मेल, या जो भी हो, में एम्बेड किया जा सकता है। ggvis, यदि आप फ़ाइल को ई-मेल करना चाहते हैं, तो आप ब्राउज़र में देखी जाने वाली HTML फ़ाइलों की निर्देशिका को ज़िप-अप कर रहे हैं।

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

अभी मेरे वर्तमान प्रोजेक्ट में, मैंने ggplot2 से ggvis में स्विच किया क्योंकि ggplot2 इंटरैक्टिव रूप से एनिमेट करने के लिए बहुत धीमा था। लेकिन, मैं उपयोगकर्ता को भी पसंद करूंगा, सेटिंग्स के साथ रहने के बाद, "गो" पर क्लिक करने और वे क्या करते हैं की एक पूर्ण गति, चिकनी-एनीमेशन फिल्म डाउनलोड करने में सक्षम हो। मुझे यह पता नहीं चला है कि यह ggvis का उपयोग कैसे करें, लेकिन यह ggplot2 का उपयोग करके केक होगा।

स्पीड ggvis, ggplot2 की तुलना में बहुत अधिक, बहुत तेज है, खासकर जब डेटा बदल रहा हो। प्रत्येक ggplot2 प्लॉट में दूसरी या कुछ देरी है। ggvis के पास एक दूसरा या ऐसा समय होता है जब आप पहली बार प्लॉट बनाते हैं, उसके बाद डेटा बदलना सहज होता है - ggvis को डेटा के साथ "रिएक्टिवली" लिंक किया जा सकता है, इसलिए जब भी डेटा बदलता है, तो यह स्वयं को अपडेट करता है। Ggplot2 के साथ, पूरे प्लॉट को फिर से तैयार किया जा रहा है।

शैली और प्रकटन ggplot2 प्लॉट ggvis भूखंडों की तुलना में, पहली नज़र में, थोड़ा अच्छे लगते हैं। ggplot2 प्लॉट काफी सुरुचिपूर्ण हैं। ggvis प्लॉट सरल हैं, लेकिन वे मुझ पर बढ़ रहे हैं। Ggplot2 के लिए भी एक्सटेंशन हैं, जैसे कि xkcd और wesanderson पैकेज, जहां ggvis के लिए कोई एनालॉग नहीं है। ggplot2 प्लॉट सभी ऐसे दिखते हैं जैसे वे एक ही व्यक्ति (ggplot2 के लेखक) द्वारा बनाए गए थे और जो थोड़ी देर बाद थक जाते हैं।

पूरी तरह से वहाँ भूखंड प्रकार आप ggplot2 में बना सकते हैं कि ggvis समर्थन नहीं करता है, कम से कम अब तक। उदाहरण के लिए ggvis में कोई "गलीचा" प्लॉट तत्व नहीं है। मैंने एक या दो कोरोप्लेथ्स देखे हैं जो ggvis के साथ बनाए गए थे, लेकिन अभी तक कोई प्राकृतिक अंतर्निर्मित समर्थन नहीं है। ggplot2 में ध्रुवीय निर्देशांक (यानी, पाई चार्ट) हैं, ggvis नहीं है। इसके अलावा ggvis (और ggplot2 या ggplot2 एक्सटेंशन में या तो उपलब्ध) से गायब है: boxplots; समोच्च भूखंड; प्राकृतिक गर्मी; प्राकृतिक सहसंबंध चार्ट; dotplots; वायलिन भूखंडों; नेटवर्क भूखंड; dendrograms। बेशक मुझे यकीन है कि कुछ बहुत ही चतुर लोग इन सभी को ggvis में बना सकते हैं, लेकिन मैं उतना चालाक नहीं हूं।

एनोटेशन ggplot2 में एक बहुत अच्छा, शायद कम इस्तेमाल किया हुआ, एनोटेशन फ्रेमवर्क है। ggvis नहीं करता है

Subplots & Facets ggplot2 में बहुत अच्छी, लेकिन शायद सीमित, "फेसिंग" सुविधा है। आप ग्रिड पैकेज का उपयोग करके कई ggplot2 भूखंडों को भी जोड़ सकते हैं। अब तक, आप या तो ggvis के साथ नहीं कर सकते। ggvis के भूखंडों को एक ही छवि में जोड़ा नहीं जा सकता है (क्योंकि वे चित्र नहीं हैं, वे "लाइव" वेबपेज हैं), और यह किसी भी प्रकार के फेसिंग या सबप्लॉटिंग का समर्थन नहीं करता है। यह पाइपलाइन में होना चाहिए।

विजुअल फ्लेक्सिबिलिटी ggplot2 हर प्लॉट को एक जैसा देखना चाहता है, जिसका मतलब है कि लेखक स्टाइलिस्टी पसंद करता है। कोई रास्ता नहीं है, उदाहरण के लिए, ggplot2 में कई y कुल्हाड़ियों के साथ एक भूखंड है। ggvis कर सकते हैं। ggvis, ggplot2 की तुलना में बहुत अधिक लचीला है। छिपी किंवदंतियों जैसी चीजों को करना बहुत आसान है, कई किंवदंतियों को एक में मिलाएं, एक ही भूखंड पर अलग-अलग चीजों के लिए अलग-अलग पैमानों का उपयोग करें, आदि।

गहरी अनुकूलनशीलता यदि आप एक नया चतुर पैमाना बनाना चाहते हैं, तो यह बहुत कठिन नहीं है कि ggplot2 में (हालांकि यह बहुत भ्रामक है)। वहाँ सिर्फ एक तरीका है कि ggvis में बहुत कुछ करने के लिए नहीं लगता है। शायद इसकी अभी नहीं।

टाइम सीरीज़ ggplot2 को टाइम सीरीज़ प्लॉट करना पसंद नहीं है। यह कर सकता है , लेकिन यह नहीं चाहता है । वास्तव में दोनों में से कोई भी नहीं चाहता है; दोनों data.frame में डेटा खिलाया जाने पर जोर देते हैं, और वे xts या चिड़ियाघर वस्तुओं को संभाल नहीं सकते हैं। उनके पास टाइम सीरीज़ स्लाइस करने के लिए बिल्ट-इन फीचर्स नहीं हैं। लेकिन ggvis समय श्रृंखला के खिलाफ ggplot2 जितना कठिन नहीं है। यह आंशिक रूप से है क्योंकि इसकी इतनी तेजी से एक ggvis प्लॉट में डेटा को अपडेट करने के लिए, मुझे लगता है। यदि आप एक ऐसे समय की साजिश करना चाहते हैं जिसे आप या तो प्रस्तुत करने में हरा देंगे, लेकिन इसके बारे में ggvis बहुत कम निष्क्रिय-आक्रामक है।

क्या वे समान वाक्य रचना हैं? सॉर्ट करें ... उनके बीच बहुत कुछ सामान्य है, और एक की शैली में सोचने के लिए सीखने से दूसरे की शैली को अनुकूलित करने में मदद मिलेगी। विशेष रूप से, दोनों को डिज़ाइन किया गया है ताकि सभी कोडिंग कॉल एक दूसरे पर कोड की एक पंक्ति में पाइप हो। इसका प्राथमिक लाभ यह है कि यह डिबगिंग और प्रोफाइलिंग को वास्तव में कठिन बनाता है, और मूल रूप से Rstudio जैसी चीजों में डिबगिंग / प्रोफाइलिंग सुविधाओं को प्रस्तुत करता है। इसके अलावा, वे वाक्यात्मक रूप से काफी अलग हैं। कुछ चीजें जो ggplot2 में कठिन हैं, ggvis में आसान हैं। कुछ चीजें जो ggplot2 में आसान हैं, ggvis में असंभव हैं। और इसके विपरीत। (जिस तरह से चीजें करने के लिए ggvis करता है, उसके लिए मुझे थोड़ी वरीयता है, जिसे समझना आसान है।)

कीड़े ggvis अभी भी काफी कुछ है। कभी-कभी यह सिर्फ अजीब तरह से व्यवहार करता है। कभी-कभी, हालांकि, भूखंड बेतरतीब ढंग से उन कारणों से गायब हो जाते हैं जो घंटों तक काम करते हैं और बहुत कम समझ में आते हैं। डेवलपर्स इसे स्वतंत्र रूप से स्वीकार करते हैं, ggvis अभी तक उत्पादन के लिए तैयार नहीं है। यदि आप किसी जटिलता से निपटते हैं, तो आप पाएंगे कि वे मजाक नहीं कर रहे हैं।

नीचे की रेखा: प्रत्येक में इंटरमीडिएट प्लॉटिंग सीखने में लगभग 16 घंटे लगते हैं। तो, वास्तव में, आप शायद दोनों को जानने वाले हैं।


1
महान तुलना
स्कैन

तेजी से ggvis या जाली या rgl क्या है? (बड़े डेटासेट के लिए)
skan

+1 शानदार लेखन। मैं अब तक दोनों के साथ अपने अनुभवों के आधार पर यहां की हर बात से सहमत हूं।
डेविड क्रुक

हैलो, ggvis बनाम rcharts के बारे में क्या?
स्कंध

समय श्रृंखला: ggplot2 निश्चित रूप से विस्तार ggfortify के साथ जीत। इसके बारे में यह उत्कृष्ट दस्तावेज देखें: rpubs.com/sinhrks/basics
आर्किमिडीज़

10

मुझे लगता है कि library(ggvis)स्व व्याख्या के बाद दिखाई देने वाला संदेश :

वर्तमान में ggvis API तेजी से विकसित हो रहा है। हम दृढ़ता से अनुशंसा करते हैं कि आप उत्पादन के लिए इस पर भरोसा नहीं करते हैं, लेकिन पता लगाने के लिए स्वतंत्र महसूस करते हैं। यदि आप एक स्पष्ट बग का सामना करते हैं, तो कृपया https://github.com/rstudio/ggvis/issues पर एक न्यूनतम प्रतिलिपि प्रस्तुत करने योग्य उदाहरण दर्ज करें । प्रश्नों और अन्य चर्चा के लिए, कृपया https://groups.google.com/group/ggvis का उपयोग करें

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

यदि आप एक चमकदार एप्लिकेशन का निर्माण कर रहे हैं तो मेरे अपने अनुभव से ggvis बहुत जरूरी है। फिर एक वेब और आर फ्रेंडली ग्राफ प्लॉटिंग इंजन होने के लाभ जो वर्तमान में किसी भी तरह की कमियों को दूर करते हैं।

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

दोनों पैकेजों के पीछे दर्शन समान है, इसलिए कौशल को एक पैकेज से दूसरे में काफी आसानी से स्थानांतरित किया जा सकता है।


8

आर समुदाय कई कारणों से नए (और अक्सर अतिव्यापी) पैकेजों के साथ आता रहता है:

1) कोई व्यक्ति किसी चीज़ को बदलना चाहता है या कोई ऐसी चीज़ जोड़ना चाहता है जो किसी मौजूदा पैकेज में उपलब्ध नहीं है, लेकिन इसका बहुत कुछ ओवरलैप हो जाता है (इसलिए, कई पैकेज जो रिग्रेशन करते हैं)

2) कोई एक असाइनमेंट के रूप में एक पैकेज लिखता है

3) पैकेज लिखना मजेदार है (यदि आप उस तरह की चीज पसंद करते हैं)

4) वे नहीं जानते कि मूल पैकेज मौजूद है


9
विशिष्ट उदाहरण और आपके बिंदु 4 के बारे में: ggvis को ggplot2 के समान लोगों द्वारा लिखा जाता है। यहां महत्वपूर्ण बिंदु यह है कि ggplot2 का उपयोग इतना व्यापक है कि बहुत सारे मौजूदा कोड / आश्रित पैकेजों को तोड़े बिना बदलावों को लागू करना असंभव हो गया है।
रोलैंड

1
क्या पूंजीवाद के समाजों में आर्थिक मंदी की तरह ही इस तरह के पैरीक्सिस्टिंग पैकेज का सुदृढ़ीकरण नियत है?
क़ज़वेक्स

2
@ पेटर: आर के लिए एक बाहरी व्यक्ति के रूप में यह मुझे उचित टिप्पणी की तरह लगता है लेकिन (सबसे असामान्य रूप से) आप इस सवाल का जवाब नहीं देते हैं!
निक कॉक्स

@NickCox मैंने उन सवालों में से एक का जवाब दिया जो प्रश्न में हैं। :-)।
पीटर Flom - को पुनः स्थापित मोनिका

1
@Peter बहुत उचित बिंदु। आंकड़े.stackexchange.com/questions/58966/… के लिए एक क्रॉस संदर्भ है, इसलिए मुझे लगता है कि प्रासंगिक है।
निक कॉक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.