प्रोटॉविस बनाम डी 3।जेएस


84

TLDR: क्या किसी के पास प्रोटॉविस और डी 3 दोनों का अनुभव है?

मैं पिछले 2 हफ्तों से प्रोटॉविस के साथ खेल रहा हूं और यह अब तक बहुत अच्छा रहा है। सिवाय अब मुझे लगता है कि एनीमेशन के साथ एक ईंट की दीवार पर थोड़ा सा मारा गया है।

प्रोटोविस: http://vis.stanford.edu/protovis/

मैं कुछ काफी सरल एनीमेशन करना चाहता हूं, लेकिन प्रोटॉविस के साथ यह सहज ज्ञान की तुलना में कम लगता है - मैं यह सोचना शुरू कर रहा हूं कि प्रोटॉविस वास्तव में एनीमेशन के लिए कभी नहीं थे। तो, मैंने D3.js को देखना शुरू किया:

http://mbostock.github.com/d3/ex/stack.html

यह बहुत समान दिखता है, लेकिन:

  • ज्यादा हल्का लगता है
  • अन्य DOM तत्वों के साथ-साथ SVG के साथ बातचीत करने के लिए तैयार लगता है
  • एनिमेशन जोड़ने के लिए तैयार लगता है

क्या कोई अन्य मतभेदों पर रोशनी डाल सकता है?

मैं किसी भी और सभी इनपुट के लिए बहुत आभारी रहूंगा

जवाबों:


117

मैंने प्रोटॉविस के साथ उचित काम किया है और डी 3 के साथ कुछ चीजें। आपके द्वारा उल्लिखित बिंदुओं के अलावा, मुझे लगता है कि निम्नलिखित अंतर मेरे लिए खड़े हैं:

  • जहां प्रोटॉविस आपके द्वारा निर्दिष्ट दृश्य गुणों के बीच एक सरलीकृत अमूर्त परत प्रदान करता है, डी 3 वास्तविक सीएसएस और डोम चश्मा का उपयोग करता है - इसलिए इसके बजाय .width(10)या .fillStyle('#00C')आप उपयोग करेंगे .style('width', 10)या .attr('fill', '#00C')। इन उदाहरणों में, अंतर बहुत तुच्छ है, लेकिन जब आप एक एसवीजी छवि में एक रेखा खींचने जैसा कुछ कर रहे होते हैं, तो बड़े अंतर होते हैं। नतीजा यह है कि डी 3 का उपयोग करने से थोड़ा कम-स्तर महसूस हो सकता है - आपके पास अधिक नियंत्रण है, लेकिन आपको कुछ चीजों को करने के लिए एसवीजी सिंटैक्स के साथ बहुत परिचित होना होगा प्रोटॉविस बहुत आसानी से करता है।

  • जैसा कि आप ध्यान दें, प्रोवोविस एसवीजी में सभी प्रदान किया गया है, जबकि डी 3 डोम के अन्य भागों का उपयोग कर सकता है। इसका मतलब है कि, उन विज़ुअलाइज़ेशन के लिए जिन्हें एसवीजी-आधारित विज़ुअल तत्वों की आवश्यकता नहीं है, आप एसवीजी का समर्थन नहीं करने वाले ब्राउज़रों के साथ भी डी 3 का उपयोग कर सकते हैं। इसका अर्थ यह भी है कि HTML और SVG को एक ही विज़ुअलाइज़ेशन में एकीकृत करना बहुत आसान है, जो कि पाठ से निपटने जैसी चीज़ों के लिए बहुत अच्छा है (पाठ हेरफेर और लेआउट प्रोटॉविस में बहुत कमजोर है)।

  • डी 3 कुछ बुनियादी प्रोटॉविस उपयोगिताओं जैसे तराजू और डेटा हेरफेर को बदल देता है या छोड़ देता है। मैं बार-बार इस बात से नाराज हूं कि डी 3 जैसी बुनियादी सुविधाएं नहीं हैं pv.sum()या pv.mean()नहीं हैं, हालांकि कुछ, जैसे .nest(), दोनों पुस्तकालयों में साझा किए जाते हैं। संपादित 10/1/12: डी 3 अपने डेटा उपयोगिताओं नहीं भरी है, लेकिन अभी भी कुछ ही रहे हैं कि Protovis भी शामिल है और डी 3 नहीं है, उदाहरण के लिए pv.dict, pv.numerate, और pv.repeat। संभवत: उन्हें छोड़ दिया गया क्योंकि उन्हें कम उपयोगी माना जाता था।

  • डी 3 अतुल्यकालिक अनुरोधों के लिए उपयोगिताओं प्रदान करता है। जब मैं प्रोटॉविस में यह चाहता हूं, तो मुझे आम तौर पर एक बाहरी पुस्तकालय (यानी jQuery) का उपयोग करना होगा।

  • डी 3 एपीआई प्रलेखन लगभग पूरी तरह से अपूर्ण है, प्रोटॉविस के लिए काफी विस्तृत डॉक्स की तुलना में। संपादित करें (8/30/13) : डी 3 में अब गीथहब पर पूर्ण और विस्तृत एपीआई प्रलेखन है , इसलिए यह बिंदु अब प्रासंगिक नहीं है।

  • अंत में, मैंने एनीमेशन के साथ बहुत कुछ नहीं किया है, लेकिन मुझे लगता है कि आप पूरी तरह से सही हैं - डी 3 प्रोटॉविस की तुलना में अधिक एनीमेशन समर्थन प्रदान करता है, विशेष रूप से एनिमेटेड बदलावों के संदर्भ में। प्रोटॉविस मांग पर कुछ या सभी विज़ुअलाइज़ेशन को फिर से प्रस्तुत कर सकता है, लेकिन सीमित अवधि के एनीमेशन के माध्यम से कदम रखने के लिए कोई समर्थन नहीं है - आपको इसे हाथ से कोड करना होगा setInterval। डी 3 इसे लाइब्रेरी का एक बहुत अधिक अभिन्न अंग बनाता है।

संपादित करें (7/12/11) : ऐसा लगता है कि एक नया बड़ा अंतर है - 28 जून 2011 तक, प्रोटॉविस अब सक्रिय विकास के अधीन नहीं है, और प्रोटॉविस टीम इसके बजाय डी 3।जेएस को आगे बढ़ा रही है। अंतिम रिलीज़ काफी स्थिर है, इसलिए यह आपको इसका उपयोग करने से नहीं रोक सकता है, लेकिन यह निश्चित रूप से विचार करने के लिए एक बिंदु है।


तीसरा बिंदु को छोड़कर, बहुत सही है। आप एक मनमानी HTML तत्व पर एक प्रोटॉविस ग्राफिक एम्बेड कर सकते हैं।
ज्योफ

@ जेफ़ - मैंने मामला खत्म कर दिया है। मेरा कहना था कि डी 3 का इरादा मनमाने तत्वों के साथ काम करना है, जबकि प्रोटॉविस (एएफएआईके) के साथ ऐसा करने के लिए स्थापित एपीआई (जैसे रूट $domसंपत्ति सेट करके) के बाहर काम करने की आवश्यकता होती है । मैं उस बात को टाल दूंगा।
nrabinowitz

1
@ जेफ - दूसरे विचार पर, मैं उस बिंदु को पूरी तरह से खोद रहा हूं - किसी तरह मैंने कभी Panel#canvasसंपत्ति पर ध्यान नहीं दिया । नोट के लिए धन्यवाद।
nrabinowitz

विस्तृत उत्तर के लिए बहुत बहुत धन्यवाद -
रिचर्ड पॉवेल

2
मार्च 2013 से, डी 3 के वी 3 के लिए एपीआई संदर्भ पूर्ण प्रतीत होता है और यह वास्तव में अच्छा प्रभाव डालता है। इसके अलावा, बहुत सारे ट्यूटोरियल और अच्छे उदाहरणों के साथ एक अच्छा दस्तावेज है।
मोबिक्वेलमेंट

32

एक ट्यूटोरियल है जो डी 3 और प्रोटॉविस के बीच के अंतरों को कुछ विस्तार से कवर करता है। मैं @ nrabinowitz के विवरण से सहमत हूं, हालांकि मैं यह बताऊंगा कि हमने हाल ही में व्यापक एपीआई प्रलेखन जोड़ा है ।


1
हाँ, मैंने अभी देखा कि कल (बहुत सराहना की गई!)। मैं उत्तर के लिए अपना उत्तर अपडेट करूंगा :)।
nrabinowitz

6

प्रोटॉविस के लेखक / d3.js द्वारा हाल ही में एक पेपर प्रकाशित किया गया है 2011 http://vis.stanford.edu/files/2011-D3-InfoVis.pdf मुख्य रूप से d3.js के बारे में, लेकिन उनमें से कुछ कारणों से जिसमें वे कुछ बदल गए हैं प्रोटॉविस से d3.js. के रास्ते में चीजें


मुझे वह कागज उपयोगी लगा । कोई परीक्षण किए बिना, यह मुझे सराहना देता है कि यह कहां काम करता है और कहां अपूर्ण है। धन्यवाद।
माइक गेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.