0

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

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

我想为yrangey2range设置不同的范围,但我无法提前告诉可能的值。当然,我想尽可能地填满输出屏幕。

我怎么能那样做?

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

#!/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

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

4

1 回答 1

0

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

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

不过,这带来了另一个问题——你为什么不只是自动缩放?

set yrange [*:*]
set y2range [*:*]
于 2012-10-31T14:52:49.430 回答