gnuplot: एक ही ग्राफ में कई इनपुट फ़ाइलों से डेटा की साजिश रचने


84

मैं gnuplot का उपयोग करके एक ग्राफ बनाने की कोशिश कर रहा हूं। मेरे पास छह टेक्स्ट फाइलें हैं। प्रत्येक पाठ फ़ाइल में दो कॉलम होते हैं। पहला कॉलम सेकंड (एक अस्थायी बिंदु संख्या) में समय का प्रतिनिधित्व करता है। दूसरा एक अनुक्रम संख्या है। मैं सभी छह फाइलों के लिए एक ही ग्राफ में समय बनाम अनुक्रम संख्या के ग्राफ को प्लॉट करना चाहता हूं। मैं ऐसा करने के लिए इस फ़ाइल का उपयोग कर रहा हूं।

set terminal png
set output 'akamai.png'

set xdata time
set timefmt "%S"
set xlabel "time"

set autoscale

set ylabel "highest seq number"
set format y "%s"

set title "seq number over time"
set key reverse Left outside
set grid

set style data linespoints

plot "print_1012720" using 1:2 title "Flow 1", \
plot "print_1058167" using 1:2 title "Flow 2", \
plot "print_193548"  using 1:2 title "Flow 3", \ 
plot "print_401125"  using 1:2 title "Flow 4", \
plot "print_401275"  using 1:2 title "Flow 5", \
plot "print_401276"  using 1:2 title "Flow 6"

मेरी फाइलें कहां हैं:

  • print_1012720
  • print_1058167
  • print_193548
  • print_401125
  • print_401275
  • print_401276

यह नीचे के रूप में एक अजीब त्रुटि दे रहा है:

"प्लॉट.प्लेट", लाइन 24: अपरिभाषित चर: प्लॉट

क्या मुझसे कुछ गलत हो रही है? क्या एक ही ग्राफ़ में विभिन्न फ़ाइलों से इनपुट डेटा को प्लॉट करना संभव है?


होशियार रहें, इस विषय पर जाएं stackoverflow.com/questions/14946530/…
मार्कोस एलेक्स

जवाबों:


133

तुम इतने करीब हो!

परिवर्तन

plot "print_1012720" using 1:2 title "Flow 1", \
plot "print_1058167" using 1:2 title "Flow 2", \
plot "print_193548"  using 1:2 title "Flow 3", \ 
plot "print_401125"  using 1:2 title "Flow 4", \
plot "print_401275"  using 1:2 title "Flow 5", \
plot "print_401276"  using 1:2 title "Flow 6"

सेवा

plot "print_1012720" using 1:2 title "Flow 1", \
     "print_1058167" using 1:2 title "Flow 2", \
     "print_193548"  using 1:2 title "Flow 3", \ 
     "print_401125"  using 1:2 title "Flow 4", \
     "print_401275"  using 1:2 title "Flow 5", \
     "print_401276"  using 1:2 title "Flow 6"

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


74

आप पा सकते हैं कि इस मामले में gnuplot के लिए लूप उपयोगी हैं, यदि आप अपने फ़ाइल नाम या ग्राफ़ शीर्षक को उचित रूप से समायोजित करते हैं।

जैसे

filenames = "first second third fourth fifth"
plot for [file in filenames] file."dat" using 1:2 with lines

तथा

filename(n) = sprintf("file_%d", n)
plot for [i=1:10] filename(i) using 1:2 with lines

6
मुझे पता है कि यह पुराना है, लेकिन उस वैकल्पिक समाधान को जोड़ने के लिए धन्यवाद। Gnuplot में छोरों के बारे में पता नहीं था, और वे एक अद्भुत विशेषता हैं।
अमित

सामान्य फ़ाइल नाम कन्वेंशन (name.dat) मानकर मुझे लगता है कि यह फ़ाइल होनी चाहिए। "। Dat"। सबसे पहला । "नाम" के लिए फ़ाइलनाम को संक्षिप्त करता है, लेकिन वास्तव में प्लॉटिंग कमांड में उपयोग किए जाने वाले फ़ाइलनाम में शामिल नहीं है।
जेक

मैं स्पष्ट रूप से उनके नाम लिखने के बिना निर्देशिका की सभी फ़ाइलों को कैसे प्लॉट कर सकता हूं ? ( stackoverflow.com/q/29969393/855050 )
बीकेओ

मैंने उस प्रश्न का उत्तर जोड़ा है, @becko।
रिचर्ड

22

replot

यह एक ही बार में कई प्लॉट प्राप्त करने का एक और तरीका है:

plot file1.data
replot file2.data

1
सबसे अच्छा जवाब, पहले वाले ने काम नहीं किया। आउटपुट था: "प्रारूप में टाइप डबल (% lf) के 1-7 रूपांतरण होने चाहिए"। जबकि अन्य विकल्प केवल आपको यह करने की अनुमति देते हैं यदि सभी डेटा कॉलम समान हैं।
RSM
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.