বাশ দিয়ে gnuplot ষড়যন্ত্র স্বয়ংক্রিয় করুন


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
বিএসডি

মন্তব্যের জন্য ধন্যবাদ. আপনি পোস্টে মন্তব্য করার মতো আমি এটিই করছিলাম।
ওয়াজটেক

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

আরো বিস্তারিত জানার জন্য এখানে ক্লিক করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.