Gnuplot में, लाइनों के साथ कैसे प्लॉट करें लेकिन लापता डेटा बिंदुओं को छोड़ें?


20

मुझे प्रत्येक दिन से संबंधित मान मिला है, जैसे:

120530    70.1
120531    69.0
120601    69.2
120602    69.5
# and so on for 200 lines

जब लाइनों के साथ gnuplot में इस डेटा की साजिश रचते हैं, तो डेटा बिंदु अच्छी तरह से जुड़े होते हैं। दुर्भाग्य से, एक सप्ताह से अधिक स्थानों पर डेटा बिंदु गायब हो सकते हैं। Gnuplot इन अंतराल पर लंबी लाइनें खींचता है। मैं gnuplot को केवल लगातार दिनों पर कैसे कनेक्ट कर सकता हूं?

डेटा के प्रीप्रोसेसिंग की आवश्यकता वाले समाधान ठीक हैं, क्योंकि मैं पहले से ही इसे स्क्रिप्ट के साथ चिकना करता हूं।

यहाँ मेरा उपयोग है:

set xdata time
set timefmt "%y%m%d"
plot "vikt_ma.txt" using 1:2 with lines title "first line", \\
     ""            using 1:3 with lines title "second line"

उदाहरण: gnuplot उदाहरण


यहाँ समस्या की एक तस्वीर है: i.stack.imgur.com/aYH4N.png (किसी कारण से पोस्ट में चित्र नहीं जोड़ सकते)। मैं चाहता हूं कि परिचालित क्षेत्र को खाली छोड़ दिया जाए।
अन्ना

सुपरयुजर में आपका स्वागत है। आप इसलिए नहीं कर सकते क्योंकि आपने अभी तक इस साइट पर पर्याप्त प्रतिष्ठा नहीं जुटाई है। यदि आप मेरे परिवर्तनों से नाखुश हैं, तो आप निश्चित रूप से उन्हें वापस कर सकते हैं (या फिर से संपादित कर सकते हैं)।
बरन

जवाबों:


16

जहां डेटा नहीं है वहां एक खाली रिकॉर्ड (खाली लाइन) लगाएं। से डॉक्स :

एकल रिक्त रिकॉर्ड एक प्लॉट में छूट को निर्दिष्ट करते हैं; कोई भी रेखा रिक्त अभिलेखों द्वारा अलग किए गए बिंदुओं में शामिल नहीं होगी (यदि उन्हें एक पंक्ति शैली के साथ प्लॉट किया गया है)।


1
धन्यवाद, यह सभी श्रृंखलाओं में असंतोष के लिए काम करता है। क्या होगा अगर मेरे पास एक श्रृंखला में एक असंतोष है, लेकिन दूसरे में नहीं?
अन्ना

8
यह मूल्यों के बजाय डैश लगाकर काम करता था।
अन्ना

मेरे लिए - यह 2 अंतरिक्ष वर्णों के साथ एक पंक्ति थी।
3kstc

9

आप किसी भी स्ट्रिंग का उपयोग कर सकते हैं जो लापता डेटा बिंदुओं के लिए मान के रूप में एक संख्या नहीं है या set datafile missingकमांड का उपयोग करके एक लापता डेटा स्ट्रिंग को स्पष्ट रूप से निर्दिष्ट करता है ।

यदि आप फिर लाइनों का उपयोग करके प्लॉट करते हैं

plot "vikt_ma.txt" using 1:($2) with lines title "first line"

तब Gnuplot एक अंतर छोड़ देगा।


2

जब आप x मानों के बीच की दूरी कुछ सीमा से अधिक हो जाती है, तो आप स्वचालित रूप से अंतराल बनाने के लिए कुछ ऐसा कर सकते हैं:

previous=1
current=1
shift(x) = (previous=current, current=x)
yornothing(x,y) = ( shift(x), abs(x-previous)<7200?y:sqrt(0/0))

plot "file.dat" using 1:(yornothing($1,$2)) with lines

आपको "पिछले" और "वर्तमान" के प्रारंभिक मूल्यों को समायोजित करने की आवश्यकता होगी, और सीमा ("7200" ऊपर के उदाहरण में)।

फ़ंक्शन "यार्निंग" एक्स के एक पिछले मूल्य को संग्रहीत करने के लिए फ़ंक्शन "शिफ्ट" का उपयोग करता है। हर बार यार्निंग को कहा जाता है, यह या तो y या "0/0" का मान लौटाता है, जो इस बात पर निर्भर करता है कि x और उसके पिछले मान के बीच का निरपेक्ष मान थ्रेशोल्ड से अधिक है या नहीं।

0/0 का मान gnuplot को उस बिंदु को अनदेखा करने के लिए कहता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.