मेरे पास कुछ टेक्स्ट फ़ाइल में डेटा है जो कि 10000 पंक्तियों और 2 कॉलम कहता है। मुझे पता है कि मैं इसे plot "filename.txt" using 1:2 with lines
द्वारा आसानी से साजिश कर सकता हूं। मैं जो चाहता हूं वह सिर्फ प्लॉटिंग को 1000 से 2000 या किसी अन्य उचित चयन से पंक्तियों का कहना है। क्या यह आसानी से करना संभव है? पहले से ही बहुत - बहुत धन्यवाद।Gnuplot किसी फ़ाइल से कुछ पंक्ति तक डेटा प्लॉटिंग
उत्तर
सरल:
plot "<(sed -n '1000,2000p' filename.txt)" using 1:2 with lines
ऐसा प्रतीत होता है 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" का उपयोग करें।
आप पर हैं लिनक्स या मैक ओएसएक्स, आपको पहले से ही अजीब होना चाहिए (यह मानक * निक्स टूलसेट का हिस्सा है, जैसे sed और grep)। मैं उपरोक्त आदेश को प्री-प्रोसेसिंग चरण (gnuplot लॉन्च करने से पहले) के रूप में चलाकर शुरू करूंगा, जो आपकी मौजूदा फ़ाइल को बिना छेड़छाड़ करते समय एक नई डेटा फ़ाइल "processed.txt" बनाएगा। फिर आपको अपने प्लॉटिंग कमांड में "filename.txt" के स्थान पर "processed.txt" का उपयोग करना चाहिए। अजीब के लिए मैनुअल यहां पाया जा सकता है: http://www.gnu.org/software/gawk/manual/gawk.html –
देशी gnuplot समाधान – Pankrates
मैं sed
, grep
या bash
जैसे कुछ कमांडलाइन उपकरण की सिफारिश करेंगे। अपने उदाहरण में
head -n 2000 ./file.data > temp.data
और
tail -n 1000 temp.data > temp2.data
काम हो सकता है। लेकिन अगर इस तरह की बड़ी संख्या सिर और पूंछ के साथ काम करती है तो परीक्षण नहीं किया है।
आप शायद एक बाहरी उपयोगिता पर निर्भरता बाहर कटौती कर सकते हैं (अपने सिस्टम है उन्हें उदाहरण के लिए स्थापित नहीं है, तो) छद्म स्तंभ 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 पर परीक्षण किया, लिनक्स)
gnuplot NaN मूल्यों पर ध्यान नहीं देता। यह एक्स समन्वय की एक निर्दिष्ट सीमा के लिए मेरे लिए काम करता है। निश्चित नहीं है कि पंक्ति सीमा निर्दिष्ट करने के लिए कैसे करें।
cutoff(c1,c2,xmin,xmax) = (c1>=xmin)*(c1<=xmax) ? c2 : NaN
plot "data.txt" u 1:(cutoff(($1),($2),1000,2000))
शायद यह आप भी मदद कर सकते हैं: http://stackoverflow.com/questions/6564561/gnuplot-conditional-plotting-plot-col-acol-b-if-col-cx –