1

同じグラフを異なる時間範囲で生成する複数の gnuplot ファイルがあります。したがって、すべてをレンダリングするもの、過去 48 時間のみをレンダリングするもの、特定の月をレンダリングするものがあります。

私の質問は今、ほとんどの設定を再利用して(ほとんど同じであるため)、プロット範囲と出力ファイルの値のみを変更する方法はありますか?

これらは、たとえば 48 時間の設定です。

set xlabel "Date (UTC)"
set ylabel "Size (Gibibytes)"
set title sprintf("Storagespace used and available (Generated: %s)", date)
set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set format x "%Y\n%m-%d\n%H:%M"
set xtics rotate
set terminal svg size 1280,720
set output "/var/www/sizes/sizes-graph-48h.svg" 
set datafile separator "    "
set autoscale xfix
set key below
set grid xtics ytics
FACTOR=1024*1024
plot "< tail -48 /home/fabian/sizes" using 1:($3/FACTOR) title 'Used by 4th/Aufnahme' with lines lc rgb "#008080", \
     "" using 1:($2/FACTOR) title 'Used by 3rd/Aufnahme' with lines lc rgb "#65000B", \
     "" using 1:($5/FACTOR) title 'Available on 4th' with lines lc rgb "blue", \
     "" using 1:($4/FACTOR) title 'Available on 3rd' with lines lc rgb "red", \
     "" using 1:(($5+$3*17/20)/FACTOR) title 'Est. max. available on 4th' with lines lc rgb "#0F52BA", \
     "" using 1:(($4+$2*17/20)/FACTOR) title 'Est. max. available on 3th' with lines lc rgb "#E62020", \
     20 notitle

48 時間設定と特定の月の設定の違いは次のとおりです。

9c9
< set output "/var/www/sizes/sizes-graph-48h.svg" 
---
> set output sprintf("/var/www/sizes/sizes-graph-%s.svg", month)
15c15
< plot "< tail -48 /home/fabian/sizes" using 1:($3/FACTOR) title 'Used by 4th/Aufnahme' with lines lc rgb "#008080", \
---
> plot sprintf("< grep \"%s*\" /home/fabian/sizes", month) using 1:($3/FACTOR) title 'Used by 4th/Aufnahme' with lines lc rgb "#008080", \

ご覧のとおり、出力ファイル ( に設定monthすることは可能48hです) とプロット範囲パラメーターを除いて、それらは同一です。ここで完了するのは、48 時間設定と「全体」設定の違いです。

9c9
< set output "/var/www/sizes/sizes-graph-48h.svg" 
---
> set output "/var/www/sizes/sizes-graph.svg" 
15c15
< plot "< tail -48 /home/fabian/sizes" using 1:($3/FACTOR) title 'Used by 4th/Aufnahme' with lines lc rgb "#008080", \
---
> plot "/home/fabian/sizes" using 1:($3/FACTOR) title 'Used by 4th/Aufnahme' with lines lc rgb "#008080", \

さて、ここでは出力ファイルの最後にダッシュがありませんが、前のようなset output sprintf("/var/www/sizes/sizes-graph%s.svg", range)場所rangeのようなものを使用できますmonthが、先頭にダッシュがあります。

しかし、主な問題は次のとおりです。一度tailを使用すると、他の場合はgrepを使用し、最後の場合はどちらも使用しません(ただし、すべての行に一致するgrepを使用できます)。のような言い方はありgnuplot settings.gnuplot plotsource="< tail -48 /home/fabian/sizes"ますか?

ファビアン

4

3 に答える 3

1

スクリプト呼び出しを減らして、スクリプトに渡すパラメーターを 1 つだけにする方法を次に示します。これにより、この 1 つの gnuplot スクリプト内にさらに詳細が隠されます。

set xlabel "Date (UTC)"
set ylabel "Size (Gibibytes)"
set title sprintf("Storagespace used and available (Generated: %s)", \
    "`date -u +"%Y-%m-%d %H:%M:%S (%Z)"`")
set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set format x "%Y\n%m-%d\n%H:%M"
set xtics rotate
set terminal svg size 1280,720
if (exists('month')) {
    source = sprintf('< grep "%s*" /home/fabian/sizes', month)
    name = month
} else {
    if (!exists('hours')) { hours = 48 }
    name = sprintf('%dh', hours)
    source = sprintf('< tail -%d /home/fabian/sizes', hours)
}
set output sprintf("/var/www/sizes/sizes-graph-%s.svg", name)
set datafile separator "    "
set autoscale xfix
set key below
set grid xtics ytics
FACTOR=1024*1024
plot source using 1:($3/FACTOR) title 'Used by 4th/Aufnahme' with lines lc rgb "#008080", \
     "" using 1:($2/FACTOR) title 'Used by 3rd/Aufnahme' with lines lc rgb "#65000B", \
     "" using 1:($5/FACTOR) title 'Available on 4th' with lines lc rgb "blue", \
     "" using 1:($4/FACTOR) title 'Available on 3rd' with lines lc rgb "red", \
     "" using 1:(($5+$3*17/20)/FACTOR) title 'Est. max. available on 4th' with lines lc rgb "#0F52BA", \
     "" using 1:(($4+$2*17/20)/FACTOR) title 'Est. max. available on 3th' with lines lc rgb "#E62020", \
     20 notitle

これで、次のいずれかでスクリプトを呼び出すことができます

gnuplot -e "month='sep'" /home/fabian/sizetable-base.gnuplot

また

gnuplot -e "hours=48" /home/fabian/sizetable-base.gnuplot

hoursまたはを設定せずに呼び出された場合、これもデフォルトになりますmonth

于 2013-10-22T11:53:13.493 に答える
1

類似性に応じて、gnuplot のcallコマンドを使用できます。それ以外の場合は、個別のコンポーネントをファイルと必要なコンポーネントに分割できloadます。(は、追加の引数を受け入れる点を除いてcall似ています。)load

于 2013-10-20T15:43:49.257 に答える
0

私が見つけた1つの解決策は、bashを使用することです。タイトルのパラメーターは既にあり、datebash を使用して自動的に生成します。そこで、基本的な gnuplot テンプレートを作成しました。

set xlabel "Date (UTC)"
set ylabel "Size (Gibibytes)"
set title sprintf("Storagespace used and available (Generated: %s)", date)
set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set format x "%Y\n%m-%d\n%H:%M"
set xtics rotate
set terminal svg size 1280,720
set output sprintf("/var/www/sizes/sizes-graph-%s.svg", type)
set datafile separator "    "
set autoscale xfix
set key below
set grid xtics ytics
FACTOR=1024*1024
plot source using 1:($3/FACTOR) title 'Used by 4th/Aufnahme' with lines lc rgb "#008080", \
     "" using 1:($2/FACTOR) title 'Used by 3rd/Aufnahme' with lines lc rgb "#65000B", \
     "" using 1:($5/FACTOR) title 'Available on 4th' with lines lc rgb "blue", \
     "" using 1:($4/FACTOR) title 'Available on 3rd' with lines lc rgb "red", \
     "" using 1:(($5+$3*17/20)/FACTOR) title 'Est. max. available on 4th' with lines lc rgb "#0F52BA", \
     "" using 1:(($4+$2*17/20)/FACTOR) title 'Est. max. available on 3th' with lines lc rgb "#E62020", \
     20 notitle

dateこれには、 、 のtype3つのパラメータが必要sourceです。最後の 48 エントリ (= 時間) を使用する bash スクリプトは次のようになります。

gnuplot -e "date='`date -u +"%Y-%m-%d %H:%M:%S (%Z)"`'" -e "type='48h'" -e "source='< tail -48 /home/fabian/sizes'" /home/fabian/sizetable-base.gnuplot
于 2013-10-22T10:45:07.477 に答える