2012-02-06 24 views
5

मैं डेटा (ज्यादातर लाइन ग्राफ़ और ऐसे) की साजिश के लिए एक टूल खोजने का प्रयास कर रहा हूं जिसका उपयोग उच्च प्रदर्शन अनुप्रयोगों के लिए किया जा सकता है। मेरी डेटा विंडो में आम तौर पर 500 से कई हज़ार अंक होते हैं, और मैं 10 या उससे अधिक की फ्रेमरेट से खुश हूं। मुझे एक सॉकेट पर एक बाइनरी स्ट्रीम के रूप में मेरा डेटा प्राप्त होता है। मै मैक ओएस एक्स पर हूं।उच्च-प्रदर्शन रीयलटाइम डेटा प्रदर्शन

मैंने कई समाधानों की कोशिश की है, और मैं नीचे उनके साथ अपने अनुभवों पर चर्चा करता हूं।

आर: डरावना धीमा और रखने में असमर्थ, सॉकेट, ग्राफ फ़्लिकर पढ़ने के लिए दर्दनाक।

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

Gnuplot: बहुत बेहतर प्रदर्शन और एपीआई। हालांकि, बड़ी मात्रा में डेटा को gnuplot में संचारित करना अस्थायी ASCII (!) फ़ाइलों को उत्पन्न करके होता है - इसका मतलब है कि अगर मेरा फ़्रेमेट ऊपर जाता है, तो मैं डिस्क की बहुत कुछ पढ़ना शुरू कर रहा हूं और यह एक प्रदर्शन समस्या है।

कोई अन्य सुझाव?

+0

आपका प्रश्न मेरा जैसा दिखता है: http://stackoverflow.com/questions/8946474/is-it-possible-to-speed-up-matlab-plotting-by-calling-cc-code-in-matlab – memyself

+0

मुझे यकीन नहीं है कि क्या आप इसे सी ++ या अन्य भाषा के बाहर कर सकते हैं, लेकिन मैं फ्लिकर को मेमोरी बिटमैप पर चित्रित करके और फिर स्क्रीन पर इसे दबाकर रोकता हूं। यह वास्तव में तेज़ है क्योंकि यह पेंट के दौरान आयतों को ओवरलैप करने के लिए क्लिपिंग नहीं कर रहा है। इसके अलावा, उपयोगकर्ता के लिए यह तेज़ लग रहा है भले ही यह नहीं है। –

+0

@ माइकडुनलेवी धन्यवाद - लेकिन साजिश और चित्रकला करने के लिए आप किस तकनीक का उपयोग करते हैं। – Jake

उत्तर

4

अस्थायी फ़ाइलों के बजाय पाइप डेटा का उपयोग करके gnuplot आज़माएं। उदाहरण उपयोग:

plot "data_acquisition_cmd <" with image 

आप कर सकते हैं एक पाइप से आदेश को पढ़ने के रूप में अच्छी तरह से replots की एक अंतहीन स्ट्रीम में पाइप:

load "while [ 1 ]; do echo 'replot'; done <" 

एक और अधिक मजबूत समाधान के लिए, ऐसे इंटरफेस का इस्तेमाल पर्ल से gnuplot पर विचार, GnuplotIF, या पायथन (gnuplot.py) की तरह, क्योंकि वे gnuplot के प्रोग्रामेटिक नियंत्रण और डेटा को सीधे पास करने की क्षमता दोनों की अनुमति देते हैं।

संपादित करें: वाक्य रचना सुधार के लिए धन्यवाद Jonhoo

+0

जो लोग इसे आजमाते हैं और त्रुटियों का एक गुच्छा प्राप्त करते हैं, पीछे की जगह बदलें। एक अग्रणी <के साथ, और यह सभी सही ढंग से काम करना चाहिए –

+0

@ जोनहू: क्या यह एक प्लेटफॉर्म-विशिष्ट चीज़ है, या क्या मुझे जवाब संशोधित करना चाहिए? –

+0

जो मैं [gnuplot दस्तावेज़ीकरण] (http://gnuplot.info/docs_4.6/gnuplot.pdf) से बता सकता हूं, से '<' बाहरी स्क्रिप्ट से डेटा को पाइप करने का एकमात्र स्वीकार्य तरीका डेटा के लिए दोनों को gnuplot (पी 83) और 'लोड' (पी 71) के लिए। '|' का उपयोग केवल आउटपुट ऑपरेशंस के लिए किया जाता है, जहां आप कहीं भी gnuplot के आउटपुट को पाइप करना चाहते हैं ('save',' print' या 'output')। –

0

आप QCustomPlot http://www.workslikeclockwork.com/index.php/components/qt-plotting-widget/

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

0

Qwt लाइब्रेरी में वास्तविक समय में डेटा प्लॉट करने की क्षमता है। स्रोत पेड़ में कुछ उदाहरण भी हैं जो वास्तविक समय में साजिश के विभिन्न तरीकों को प्रदान करते हैं। विशेष रूप से, मैं ऑसिलोस्कोप, रीफ्रेशटेस्ट और रीयलटाइम उदाहरणों को देखने का सुझाव दूंगा।

इसके अतिरिक्त, मेलिंग सूची पर recent discussion भी उपयोगी हो सकता है जो सहायक हो सकता है।

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