2012-03-02 5 views
30

मेरे पास कुछ टेक्स्ट फ़ाइल में डेटा है जो कि 10000 पंक्तियों और 2 कॉलम कहता है। मुझे पता है कि मैं इसे plot "filename.txt" using 1:2 with lines द्वारा आसानी से साजिश कर सकता हूं। मैं जो चाहता हूं वह सिर्फ प्लॉटिंग को 1000 से 2000 या किसी अन्य उचित चयन से पंक्तियों का कहना है। क्या यह आसानी से करना संभव है? पहले से ही बहुत - बहुत धन्यवाद।Gnuplot किसी फ़ाइल से कुछ पंक्ति तक डेटा प्लॉटिंग

+0

शायद यह आप भी मदद कर सकते हैं: http://stackoverflow.com/questions/6564561/gnuplot-conditional-plotting-plot-col-acol-b-if-col-cx –

उत्तर

26

सरल:

plot "<(sed -n '1000,2000p' filename.txt)" using 1:2 with lines 
+1

के लिए +1 क्या कोई अच्छी ऑनलाइन सामग्री है जहां मैं इस तरह के छोटे से सीख सकता हूं भयानक चाल उत्तर बीटीडब्ल्यू के लिए धन्यवाद। – YBE

+0

@YBE मैं सुझाव देता हूं [यह साइट] (http://t16web.lanl.gov/Kawano/gnuplot/index-e.html)। – kev

+0

@kev टूटी हुई लिंक –

58

ऐसा प्रतीत होता है gnuplot में "every" command आप जो खोज रहे हैं यह है कि:

plot "filename.txt" every ::1000::2000 using 1:2 with lines 

वैकल्पिक रूप से, आपकी फ़ाइल पूर्व प्रक्रिया पंक्तियों जिसमें आप रुचि रखते हैं का चयन करें। उदाहरण के लिए, awk का उपयोग कर:

awk "NR>=1000 && NR<=2000" filename.txt > processed.txt 

फिर अपने मौजूदा gnuplot आदेश/लिपि में जिसके परिणामस्वरूप "processed.txt" का उपयोग करें।

+0

आप पर हैं लिनक्स या मैक ओएसएक्स, आपको पहले से ही अजीब होना चाहिए (यह मानक * निक्स टूलसेट का हिस्सा है, जैसे sed और grep)। मैं उपरोक्त आदेश को प्री-प्रोसेसिंग चरण (gnuplot लॉन्च करने से पहले) के रूप में चलाकर शुरू करूंगा, जो आपकी मौजूदा फ़ाइल को बिना छेड़छाड़ करते समय एक नई डेटा फ़ाइल "processed.txt" बनाएगा। फिर आपको अपने प्लॉटिंग कमांड में "filename.txt" के स्थान पर "processed.txt" का उपयोग करना चाहिए। अजीब के लिए मैनुअल यहां पाया जा सकता है: http://www.gnu.org/software/gawk/manual/gawk.html –

+5

देशी gnuplot समाधान – Pankrates

0

मैं sed, grep या bash जैसे कुछ कमांडलाइन उपकरण की सिफारिश करेंगे। अपने उदाहरण में

head -n 2000 ./file.data > temp.data 

और

tail -n 1000 temp.data > temp2.data 

काम हो सकता है। लेकिन अगर इस तरह की बड़ी संख्या सिर और पूंछ के साथ काम करती है तो परीक्षण नहीं किया है।

6

आप शायद एक बाहरी उपयोगिता पर निर्भरता बाहर कटौती कर सकते हैं (अपने सिस्टम है उन्हें उदाहरण के लिए स्थापित नहीं है, तो) छद्म स्तंभ 0.

help plot datafile using pseudocolumn

देखने की तरह कुछ प्रयास करें उपयोग:

LINEMIN=1000 
LINEMAX=2000 

#create a function that accepts linenumber as first arg 
#an returns second arg if linenumber in the given range. 
InRange(x,y)=((x>=LINEMIN) ? ((x<=LINEMAX) ? y:1/0) : 1/0) 

plot "filename.txt" using (InRange($0,$1)):2 with lines 

(gnuplot 4.4.2 पर परीक्षण किया, लिनक्स)

1

gnuplot NaN मूल्यों पर ध्यान नहीं देता। यह एक्स समन्वय की एक निर्दिष्ट सीमा के लिए मेरे लिए काम करता है। निश्चित नहीं है कि पंक्ति सीमा निर्दिष्ट करने के लिए कैसे करें।

cutoff(c1,c2,xmin,xmax) = (c1>=xmin)*(c1<=xmax) ? c2 : NaN 
plot "data.txt" u 1:(cutoff(($1),($2),1000,2000)) 

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

  • कोई संबंधित समस्या नहीं^_^