Nuestro team de expertos luego de días de trabajo y de recopilar de datos, dimos con la solución, queremos que resulte de gran utilidad en tu trabajo.
Solución:
Las variables que quieres son GPVAL_DATA_Y_MIN
y GPVAL_DATA_Y_MAX
que son el y-min/max de los datos trazados en un cierto rango. GPVAL_Y_MIN
y GPVAL_Y_MAX
son un poco menos útiles en general porque le dicen dónde están los bordes del borde de la trama (en general, estos valores se extienden un poco más allá de la GPVAL_DATA...
variables porque gnuplot deja un pequeño espacio entre los datos y el borde de la gráfica).
Para aprovechar estas variables, debe usar los especificadores de rango para el comando de trazado:
plot [1:3] 'data.txt'
set yr [GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]
replot
...
Por cierto, el u 1:2
la especificación es redundante a menos que desee recordar qué columnas está trazando, ya que trazar las dos primeras columnas como x e y es el valor predeterminado de gnuplot. Si no desea volver a trazar en el mismo terminal de salida (lo que no es útil en algunos terminales como eps, donde volver a trazar crea una segunda página con el mismo trazado), utilice esta secuencia de comandos:
set terminal unknown
plot [1:3] 'data.txt'
set terminal
set output 'output.trm'
plot [1:3][GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX] 'data.txt'
Tenga en cuenta el uso del especificador de rango nuevamente, esta vez con un rango especificado. Esto es un poco más compacto que especificar con set yrange
pero hace que la línea de código sea más larga.
Si tiene gnuplot 4.6.0 o superior, puede aprovechar las stats
comando para evitar volver a trazar. los stats
comando crea un montón de variables útiles
stats [1:3] 'data.txt'
plot [1:3][stats_min_y:stats_max_y] 'data.txt'
Un comando ligeramente diferente,
stats [1:3] 'data.txt'
plot [stats_min_x:stats_max_x][stats_min_y:stats_max_y] 'data.txt'
Rellenaría el gráfico en la dirección x en función de dónde se encuentran los datos reales. Por ejemplo, si tuviera puntos de datos en (1.1, 3), (2, 4), (2.9,5), el rango x se establecería en [1.1:2.9].
Establecer el yrange en GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX tiene la desventaja de no usar la funcionalidad de escalado automático de gnuplots que extiende los rangos al siguiente tic.
En el trazado automático, por lo tanto, prefiero lo siguiente
f(x)=sin(x)>0.5? 1:-1 #example function
set ytics 0.2
plot 1.01*f(x) # dummy plot to set GPVAL_*
set yrange [GPVAL_Y_MIN:GPVAL_Y_MAX]
plot f(x) # actual plot
Esto también funciona para gráficos de datos, por supuesto:
plot 'data.csv' u 1:(1.01*$2)
set yrange [GPVAL_Y_MIN:GPVAL_Y_MAX]
plot 'data.csv' u 1:2