स्वचालित bnuplot भूख के साथ साजिश रचने


11

मेरे पास 6 फाइलें हैं जिन्हें त्रुटि मार्जिन के साथ लाइन ग्राफ के रूप में प्लॉट किया जाना चाहिए और उन्हें विभिन्न पीएनजी फाइलों में आउटपुट करना चाहिए। फ़ाइल प्रारूप निम्नानुसार है।

सेकंड औसत-औसत न्यूनतम अधिकतम

मैं इन ग्राफ़ को स्वचालित रूप से प्लॉट करने के बारे में कैसे जाऊंगा? इसलिए मैं bash.sh नामक फाइल चलाता हूं और यह 6 फाइलें प्राप्त करेगा और ग्राफ को विभिन्न .pngफाइलों में आउटपुट करेगा । टाइटल और एक्सिस लेबल भी आवश्यक हैं।

जवाबों:


14

अगर मैं सही तरीके से समझूं, तो यही आप चाहते हैं:

for FILE in *; do
    gnuplot <<- EOF
        set xlabel "Label"
        set ylabel "Label2"
        set title "Graph title"   
        set term png
        set output "${FILE}.png"
        plot "${FILE}" using 1:2:3:4 with errorbars
EOF
done

यह मानता है कि आपकी फ़ाइलें सभी वर्तमान निर्देशिका में हैं। ऊपर एक बैश स्क्रिप्ट है जो आपके रेखांकन को उत्पन्न करेगा। व्यक्तिगत रूप से, मैं आमतौर पर एक gnuplot कमांड फ़ाइल (इसे कॉल करें, कहते हैं gnuplot_in) लिखता हूं, प्रत्येक फ़ाइल के लिए उपरोक्त आदेशों के साथ, किसी न किसी रूप की स्क्रिप्ट का उपयोग करके gnuplot < gnuplot_in

अजगर में आपको एक उदाहरण देने के लिए:

#!/usr/bin/env python3
import glob
commands=open("gnuplot_in", 'w')
print("""set xlabel "Label"
set ylabel "Label2"
set term png""", file=commands)

for datafile in glob.iglob("Your_file_glob_pattern"):
    # Here, you can tweak the output png file name.
    print('set output "{output}.png"'.format( output=datafile ), file=commands )
    print('plot "{file_name}" using 1:2:3:4 with errorbars title "Graph title"'.format( file_name = datafile ), file=commands)

commands.close()

जहां Your_file_glob_patternकुछ ऐसा है जो आपके डेटाफ़ाइल्स के नामकरण का वर्णन करता है, वह हो *या *datglobमॉड्यूल के बजाय , आप osनिश्चित रूप से उपयोग कर सकते हैं । जो भी फ़ाइल नामों की एक सूची बनाता है, वास्तव में।


1
आपके उत्तर में आपकी टिप्पणी एक क्लीनर समाधान है, उदाहरण का प्रदर्शन करने के लिए उत्तर का विस्तार क्यों नहीं किया गया। +1
bsd

टिप्पणी के लिए धन्यवाद। जैसा आप पोस्ट पर कमेंट कर रहे थे मैं वैसा ही कर रहा था।
वोजटेक

0

अस्थायी आदेश फ़ाइल का उपयोग करके समाधान को बैश करें:

echo > gnuplot.in 
for FILE in *; do
    echo "set xlabel \"Label\"" >> gnuplot.in
    echo "set ylabel \"Label2\"" >> gnuplot.in
    echo "set term png" >> gnuplot.in
    echo "set output \"${FILE}.png\" >> gnuplot.in
    echo "plot \"${FILE}\" using 1:2:3:4 with errorbars title \"Graph title\"" >> gnuplot.in
done
gnuplot gnuplot.in

0

यह मदद कर सकता है।

#set terminal postfile       (These commented lines would be used to )
#set output  "d1_plot.ps"    (generate a postscript file.            )
set title "Energy vs. Time for Sample Data"
set xlabel "Time"
set ylabel "Energy"
plot "d1.dat" with lines
pause -1 "Hit any key to continue"

स्क्रिप्ट फ़ाइल के रूप में निष्पादित करें gnuplot filename

अधिक जानकारी के लिए यहां क्लिक करें।

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