শেল স্ক্রিপ্ট ব্যবহার করে gnuplot এ কমান্ড কার্যকর করতে হয়?


10

আমি যা করতে চাই তা হ'ল একটি স্ক্রিপ্ট লিখুন যা প্রথমে একটি প্রোগ্রাম চালু করে এবং তারপরে এটি একটি গুচ্ছ কমান্ডগুলি কার্যকর করতে এবং তারপরে ছেড়ে দিতে বলে। একটি উদাহরণ দিয়ে যেতে দিন।

আমি এই স্ক্রিপ্টটি লিখেছি myscript.shএবং এটি যেভাবে চাই তা কাজ করে না। এটি যা করে তা কেবল gnuplot চালান এবং এটি বন্ধ হওয়ার জন্য অপেক্ষা করুন এবং তারপরে অন্যান্য কমান্ডগুলি চালান; যা স্পষ্টতই ত্রুটি সৃষ্টি করে।

#!/bin/bash
gnuplot
plot sin(x)
pause -1
quit

আমি অনুমান করি এটি পরিষ্কার যে আমি কী করতে চাইছি; যদি না হয়, তবে আমাকে মন্তব্যগুলিতে জানাতে দিন।

উত্তর:


12

থেকে man gnuplotবা এর অনলাইন র manpage :

   -p,  --persist  lets  plot  windows  survive after main gnuplot program
   exits.

   -e "command list" executes the requested commands  before  loading  the
   next input file.

সুতরাং আপনি যা চালাতে চান তা হ'ল নিম্নলিখিত আদেশটি:

gnuplot -e "plot sin(x); pause -1"

আমি প্রস্তাবিত অন্যান্য রূপগুলি কিন্তু এটি কার্যকর নয়:

gnuplot -p -e "plot sin(x); pause -1"
gnuplot -e "plot sin(x)"
gnuplot -p -e "plot sin(x)"

প্রথম 2 হুবহু কাঙ্ক্ষিত আউটপুট উত্পাদন করে। যদিও -pএই উদাহরণে খুব বেশি ব্যবহার হয় না; আপনি যদি টার্মিনালে এন্টার টিপেন, gnuplot প্রস্থান করে এবং প্লট উইন্ডোটি পুরোপুরি অ ​​ইন্টারেক্টিভ হয়ে যায়, ছাড়ার কমান্ড ব্যতীত। 3 য় এর আউটপুট কেবল আসে এবং যায় (একেবারেই দৃশ্যমান নয়)। শেষটি আউটপুট উত্পাদন করে, তবে যেহেতু gnuplot অবিলম্বে বন্ধ হয়ে যায়, প্লট উইন্ডোটি আবার অ ইন্টারেক্টিভ হয় (এছাড়াও এটি একটি ছোট 1 স্কয়ার সেমি প্লট দেখায়)। তাই pause -1প্রয়োজনীয়।
মিহির গাদগিল

প্রতিক্রিয়াটির জন্য ধন্যবাদ মিহিরগাদগিল আমার উত্তর সম্পাদনা।
বাইট কমান্ডার

16

একটি উপায় সঙ্গে -persist:

#!/usr/bin/gnuplot -persist
set title "Walt pedometer" font ",14" textcolor rgbcolor "royalblue"
set timefmt "%y/%m/%d"
set xdata time
set pointsize 1
set terminal wxt  enhanced title "Walt's steps " persist raise
plot "/home/walt/var/Pedometer" using 1:2 with linespoints

অন্য কোনও উপায়ে, যদি আপনাকে ডেটা প্রিপ্রোসেস করতে হয় তবে তা ব্যাশের সাথে রয়েছে Here Document(দেখুন man bash):

#!/bin/bash
minval=0    # the result of some (omitted) calculation
maxval=4219   # ditto
gnuplot -persist <<-EOFMarker
    set title "Walt pedometer" font ",14" textcolor rgbcolor "royalblue"
    set timefmt "%y/%m/%d"
    set yrange $minval:$maxval
    set xdata time
    set pointsize 1
    set terminal wxt  enhanced title "Walt's steps " persist raise
    plot "/home/walt/var/Pedometer" using 1:2 with linespoints
EOFMarker
# rest of script, after gnuplot exits

1
এটি ("এখানে-ডক" শেল পদ্ধতি) সম্ভবত ওপি সন্ধান করেছে এমন সাধারণ জবাব। এটি প্রচুর কমান্ড-চালিত প্রোগ্রামগুলির জন্য কাজ করবে (এবং যদি না হয় তবে আপনি আরও বাড়িয়ে নিতে পারেন expect...
রোমানো

তাছাড়া আপনি এক্সিকিউটেবল সঙ্গে স্ক্রিপ্ট করতে পারেন chmod u+x myscript.gnuএবং সাথে সরাসরি চালানো ./myscript.gnu একটি নোট তোমাকে ভুলে শুধু []yrange মধ্যে: set yrange [$minval:$maxval]
হাস্তুর

3

manপৃষ্ঠাগুলিতে বর্ণিত হিসাবে , gnuplotএকটি ব্যাচ সেশন যাকে বলে একটি কমান্ড ফাইল থেকে ইনপুট প্রত্যাশা করে । আপনি উদাহরণস্বরূপ plot sin(x)একটি ফাইলের জন্য লাইন লিখুন myplotএবং তারপরে কার্যকর করতে পারেন gnuplot myplot

আপনি যদি কমান্ড ফাইলটি বাদ দেন, যেমন আপনার স্ক্রিপ্টটি করে, আপনি একটি ইন্টারেক্টিভ সেশন পাবেন


ঠিক আছে, আমি এটি পেয়েছি যে এটি একটি ইন্টারেক্টিভ সেশনে ঝাঁপিয়ে পড়েছে, তবে একই স্কটিপের মাধ্যমে সেই ইন্টারেক্টিভ সেশনে কমান্ডগুলি খাওয়ানোর কোনও উপায় নেই? এছাড়াও, আপনি আরও সাধারণ উত্তর দিতে পারেন (gnuplot নির্দিষ্ট নয়)? ধন্যবাদ!
মিহির গাদগিল

না, সমস্ত অ্যাপ্লিকেশন একইভাবে ইনপুট প্রক্রিয়া করে না। এটি সাধারণ করার কোনও উপায় নেই।
জোস

@ মিহিরগাদগিল - সমস্ত প্রোগ্রাম একইভাবে কাজ করে না ... আপনি অন্য কোনটি ব্যবহার করতে চান?
উইল্ফ

@ জোস ওহ, আমি, ধন্যবাদ! উইলফ আমি অতীতে লিনাক্স ব্যবহার করেছি তবে ব্যাপকভাবে নয়, এখন আরও শিখার চেষ্টা করছি। আমার মনে এ জাতীয় কোনও প্রোগ্রাম নেই; এই সমস্যা থেকে আমি যতটা পারি শেখার চেষ্টা করছি।
মিহির গাদগিল

0

উল্লিখিত এখানে-ডক পদ্ধতিটি জ্ঞানুপ্লট এবং অন্যান্য অনেক প্রোগ্রামের সাথেও অত্যন্ত কার্যকর। এখানের ডকটিতে Gnuplot কমান্ডের মধ্যে শেল ভেরিয়েবল ব্যবহার করে আপনি আপনার শেল স্ক্রিপ্টের কমান্ড লাইন থেকে ইনপুট দিয়ে প্লটগুলি প্যারামিটারাইজ করতে পারেন। কৌতুকপূর্ণভাবে জিনিসগুলি সেট আপ করে, আপনি "বিগ ডেটা" এর বিশাল সংখ্যক প্লটগুলি ভর-উত্পাদন করতে পারেন। আমি সঠিকভাবে এই পদ্ধতিটি ব্যবহার করে কয়েকশ স্ট্রাকচারাল ডায়নামিক্স সসীম বিশ্লেষণ রানগুলিতে 20,000 থেকে 80,000 পয়েন্টের পিইআর প্লট সহ ধারাবাহিক-দর্শনীয় স্ক্রেটার প্লট তৈরি করতাম। এটি একটি খুব শক্তিশালী পদ্ধতি।


1
আপনার উত্তরটি সম্পূর্ণ করার জন্য, আপনি এখানে বর্ণিত-ডক পদ্ধতিটি কীভাবে ব্যবহার করতে পারেন একটি উদাহরণ যুক্ত করতে পারেন?
মেলিবিয়াস

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