मैं डायने कुक के जवाब पर थोड़ा विस्तार करना चाहता हूं। जैसा कि उसने कहा, 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 घंटे लगते हैं। तो, वास्तव में, आप शायद दोनों को जानने वाले हैं।