2012-01-24 5 views
11

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

मैंने कुछ विकल्प पहचाने हैं।

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

किसी भी सलाह की बहुत सराहना की जाती है।

+4

बस एक सोचा: यदि आप 'कर पकड़ (सच); साजिश ([1,2,3,4], gid = 'foo'); साजिश ([4,3,2,1], ग्रिड = 'बार'); savefig ('foobar.svg') ', परिणामी फ़ाइल में दो पंक्तियों के आस-पास' 'और' 'तत्व होंगे, जो मुझे लगता है कि आप ऑब्जेक्ट्स में हेरफेर करने के लिए जावास्क्रिप्ट से उपयोग करने में सक्षम होंगे। –

+0

हम्म, हाँ यह वक्र-विशिष्ट मेटाडेटा जोड़ने का एक तरीका हो सकता है। हालांकि, मैं वक्र में प्रत्येक बिंदु के लिए मेटाडेटा जोड़ने का एक तरीका ढूंढ रहा हूं - अनिवार्य रूप से एक छुपा 'z' मान। अगर मुझे कोई अन्य समाधान नहीं मिल रहा है, तो मुझे लगता है कि मैं 'आईडी' में एक बड़ी JSON स्ट्रिंग फेंक सकता हूं जिसमें मुझे आवश्यक सभी मेटाडेटा चाहिए। – David

उत्तर

0

एक खोज इस पैदावार: http://www.farinspace.com/top-svg-javascript-libraries-worth-looking-at/

मैं रेखांकन के लिए निम्नलिखित पुस्तकालयों का इस्तेमाल किया है:

  1. jqPlot - बहुत अच्छा है, लेकिन svg समर्थन नहीं करता है
  2. HTML5 कैनवास - हाँ, मैं ही था अपने लक्ष्य को उत्पन्न एक स्थिर svg से उत्पादन लेने के लिए है, तो खरोंच (यहां तक ​​कि टूलटिप्स) से बहुत कुछ कुछ महान लचीलापन
0

साथ खेलने के लिए है, लेकिन मिल गया कुछ साजिश उपकरण द्वारा, और इसे कुछ इंटरैक्टिव में बदलना, तो आपको संभवतः कुछ खुद के साथ आना होगा क्योंकि उत्पादन इस तरह के हर उपकरण के लिए अलग-अलग होगा।

हालांकि, वहाँ इंटरैक्टिव एसवीजी ग्राफ पुस्तकालयों के बहुत सारे हैं, कुछ उदाहरण:

11

एक इसका तरीकामें देखा जा सकता है

मूल रूप से

:

  1. matplotlib में, matplotlib तत्व आप सहभागी बनाने के लिए चाहते हैं पर उपयोग element.set_gid ("youridhere")। यही है, प्लॉट()/हिस्ट()/जो भी() से आउटपुट पर set_gid() का उपयोग करें।
  2. matplotlib के साथ एक svg बनाएँ, लेकिन अपनी फ़ाइल के रूप में एक स्ट्रिंगियो ऑब्जेक्ट का उपयोग करें।
  3. एक xml पुस्तकालय (जैसे xml.etree.ElementTree) के साथ svg पार्स
  4. आईडी है कि आप सेट (उदाहरण के लिए "youridhere") के साथ XML तत्वों का पता लगाएं।
  5. जावास्क्रिप्ट फ़ंक्शन नाम के साथ $ {youventyoucareabout} विशेषताओं पर क्लिक करें।
  6. अपने जावास्क्रिप्ट के साथ xml पेड़ में एक सीडीएटीए के रूप में एक स्क्रिप्ट तत्व जोड़ें।
  7. xml को एक svg फ़ाइल में निर्यात करें!
+0

यह संभवतः बहुत सारी देरी पेश करेगा .. सर्वर के दृष्टिकोण से भारी संसाधन उपयोग के साथ-साथ बड़ी देरी और ब्राउज़र दुर्घटनाएं भी शामिल हैं। – khan

+3

हां। मैं इस पर उड़ान भरने का सुझाव नहीं दे रहा था। सवाल एक इंटरैक्टिव एसवीजी उत्पन्न करना था। यह एक एसवीजी उत्पन्न करेगा जिसे किसी भी समस्या के बिना स्थैतिक फ़ाइल के रूप में होस्ट किया जा सकता है। –

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