如何确定Y2_MAX?

时间:2012-10-31 13:16:44

标签: gnuplot

我正在通过gnuplot绘制2个数据集。第一个的值从约200万到约300万。第二个值从1000到2000。

从文件绘图并检查show variables all后GPVAL_Y2_MIN设置为正确的值,但GPVAL_Y2_MAX错误。奇怪的是,GPVAL_Y_MAX也是错误的,但如果仅绘制第一组,我会得到一个相对较好的值。

我想为 yrange y2range 设置不同的范围,但我无法预先告知可能的值。当然我想尽可能地填充输出屏幕。

我怎么能这样做?

编辑:添加了当前使用的代码

#!/usr/bin/gnuplot
reset
# Get max and min value
plot 'test.dat' every ::1 using 3, '' every ::1 using 4
y1_max = GPVAL_Y_MAX;
y1_min = GPVAL_Y_MIN;
y2_max = GPVAL_Y2_MAX;
y2_min = GPVAL_Y2_MIN;
set terminal png size 1024, 768 #output format png
set format y "%.1s %c"
# show png in a window without save
set output '| display png:-'
set yrange [y1_min:y1_max]
set y2range [y2_min:y2_max]
plot 'test.dat' every ::1 using 3 lt rgb '#FF00FF' title "vsize" with line, \
     '' every ::1 using 4 lt rgb '#FF0000' title "rss" with line axes x1y2

如您所见,我首先绘制数据以获取最小值和最大值,然后创建终端。

1 个答案:

答案 0 :(得分:0)

没有数据文件可以使用,我的猜测是你的问题在于你的第一遍(收集最小/最大值),你在x1y1轴上绘制两个数据集。在第二遍中,您在x1y2轴上绘制第4列,但实际上您从未实际重置y2范围,而不是默认值(您使用硬编码而不是自动缩放)。换句话说:

plot 'test.dat' every ::1 using 3, '' every ::1 using 4 axes x1y2

这提出了另一个问题 - 你为什么不只是自动缩放?

set yrange [*:*]
set y2range [*:*]