Saltar al contenido

gnuplot: valores máximos y mínimos en un rango

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_MAXque 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 yrangepero 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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *