3

基于这篇文章(我使用的是 gnuplot gnuplot 4.6 patchlevel 1):

gnuplot:一个范围内的最大值和最小值

我正在尝试set yr [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]在我的 .pg 脚本中使用从这个 .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 ""

有任何想法吗?

4

1 回答 1

8

gnuplot 定义的变量仅在plot命令后可用(在您链接到的问题中, areplot用于再次绘图)。

基本上你有不同的选择:

  1. 首先绘制到终端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

  2. 用于set autoscale固定范围而不是设置显式yrange. 您可以使用set offset根据自动缩放值指定边距:

    set autoscale yfix
    # set offset 0,0,0.5,0.5
    plot 'sample.dat' with boxes title ''
    
  3. 使用stats命令提取最小值和最大值:

    stats 'sample.dat' using 1:2
    set yrange[STATS_min_y:STATS_max_y]
    plot 'sample.dat' with boxes title ''
    
于 2013-10-29T08:22:13.640 回答