基于这篇文章(我使用的是gnuplot gnuplot 4.6 patchlevel 1):
gnuplot: max and min values in a range
我正在尝试在我的.pg脚本中使用set yr [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]
来绘制此.dat文件中的数据:
100 2
200 4
300 9
但我明白了:
undefined variable: GPVAL_DATA_Y_MIN
这是我的剧本:
set terminal png
set output 'img.png'
set xlabel 'x-label'
set ylabel 'y-label'
set boxwidth 0.5
set style fill solid
set yrange [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]
plot 'sample.dat' with boxes title ""
有什么想法吗?
答案 0 :(得分:7)
gnuplot定义的变量仅在plot
命令后可用(在您链接的问题中,replot
用于再次绘图)。
基本上你有不同的选择:
首先绘制到终端unknown
,然后切换到真实终端,设置范围(现在变量可用)和replot
:
set xlabel 'x-label'
set ylabel 'y-label'
set boxwidth 0.5 relative
set style fill solid
set terminal unknown
plot 'sample.dat' with boxes title ""
set terminal pngcairo
set output 'img.png'
set yrange [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]
replot
注意,我使用的pngcairo
终端比png
终端提供了更好的结果。我使用set boxwidth 0.5 relative
。
使用set autoscale
修复范围,而不是设置明确的yrange
。您可以使用set offset
根据自动调整的值指定边距:
set autoscale yfix
# set offset 0,0,0.5,0.5
plot 'sample.dat' with boxes title ''
使用stats
命令提取最小值和最大值:
stats 'sample.dat' using 1:2
set yrange[STATS_min_y:STATS_max_y]
plot 'sample.dat' with boxes title ''