gnuplot:任意列数的最小值和最大值

时间:2014-11-11 05:39:41

标签: gnuplot

我试图在同一个地块中绘制任意数量的线条。我的数据文件如下:

1  10  15  20
2  20  25  30
3  30  35  40
4  40  45  50
5  50  55  60

我使用multiplot来做到这一点:

set multiplot
do for [i=1:ny] {
       plot 'data.dat' u 1:i+1 with lines lc i title word(names,i)
}
unset multiplot

此示例中的ny=3。正如预期的那样,每个图的yrange是不同的,因此图形看起来非常混乱。我试图添加

set yrange [ymin:ymax]

其中ymin=min(col2,col3,col4,...,coln)是所有列中的最小值2-n,ymax是最大值。但是,我仍然不知道如何获得yminymax。函数stats允许我同时获得一列或两列的最小值和最大值,但不能更多。即使我逐列完成,我仍然不知道如何在n个标量中获得最大值。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

通常,多重绘图不是用于在一个图形中绘制多个绘图,而是用于在彼此之下绘制多个绘图。我想你想在plot命令内迭代:

plot for [i=1:ny] 'data.dat' u 1:i+1 with lines lc i title word(names, i)

这使用涵盖所有子图的值的范围。它得到了正确的关键。

答案 1 :(得分:0)

你可以使用if语句,这里是代码:

ymin=1000 #set ymin to a very large value
ymax=0    #set ymax to a very small value
do for [i=1:ny] {
stats "data.dat" u i+1
if (STATS_min < ymin) {ymin=STATS_min}
if (STATS_max > ymax) {ymax=STATS_max}
}