1
私は二重時系列の最小値と最大値にラベルを付けるプロットを作成しています。なぜgnuplotのラベルの最小値/最大値が正しくないのですか?
min
とmax
関数を定義し、各時点でより高い値と低い値のラベルと共に各系列をプロットすることでこれを行います。ラベルは上下にオフセットされているので、線と重複しません。
ラベルに関係なく、第一又は第二の列の値が高いかどうかを、常に第二列の値であることに留意されたいです。
主な問題は、最小/最大の機能が点をプロットするように機能するが、ラベルを選択するのではないと思われる。
なぜこの場合ですか?ここで
は私のMWEです:
set terminal pdfcairo size 3,2
set output 'output.pdf'
# min/max functions
min(x, y) = x > y ? y : x
max(x, y) = x > y ? x : y
set style data lines
# nice ranges
set xr [-1:5]
set yr [-1:3]
plot 'data.dat' u 0:1 title 'col 1', \
'' u 0:2 title 'col 2', \
'' u 0:(min($1,$2)) title 'min', \
'' u 0:(max($1,$2)) title 'max', \
'' u 0:(min($1,$2) - 0.2):(min($1,$2)) notitle with labels, \
'' u 0:(max($1,$2) + 0.2):(max($1,$2)) notitle with labels
とデータファイル:
1 2
2 0
1 2
1 0
0 1
ラベルをフォーマットするために 'sprintf'を明示的に使う必要があると思います:' plot 'data.dat' u 0:(min($ 1、$ 2) - 0.2):(sprintf( '%.0f'、min($ 1 、$ 2)))notitle with label'と書かれています。 – Christoph
あなたのコメントを回答すると私はそれを受け入れます。それはうまくいった!私はそれが文字列/数値比較と関係していると思っていました。そして、 'int'とのキャストによる私の実験はうまくいかなかったのです。 – andyras
私は確信が持てませんでしたが、今は古いバグレポートへのリンクも見つかりました。 – Christoph