Gnuplot 5.0. Spiderplot en 4 ejes hecho a mano

Gnuplot 5.0. Spiderplot en 4 ejes hecho a mano
Al trabajar en la visualización de datos para el artículo, surgió la necesidad de tener 4 ejes con etiquetas positivas en todos.

Como en otros gráficos del artículo, decidí usar gnuplot. Primero eché un vistazo al sitio oficial, donde hay muchos ejemplos. Me alegró ver que encontré lo que necesitaba ejemplo (solo tengo que trabajar un poco y quedará bonito, pensé).
Gnuplot 5.0. Spiderplot en 4 ejes hecho a mano
Rápidamente copié el código, lo ejecuto. Me sale un error. Investigo. Resultó que tengo una versión antigua de gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) y no sabe hacerlo así.

Sabiendo de la flexibilidad de gnuplot, empecé a buscar en las vastedades de la web y encontré varios ejemplos adecuados en stackoverflow (Eje x doble en un gráfico de araña con Gnuplot y ¿Cómo crear un gráfico de araña en Gnuplot?) y github (gnuplot-radarchart). Estos se convirtieron en mi punto de partida.

Luego, mis manipulaciones con los comandos llevaron a lo siguiente:

0) Desactivamos los bordes

unset border

1) Creamos 4 líneas nulas — 2 principales y 2 adicionales:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Unas palabras sobre las líneas nulas en la documentación. Esta operación permite centrar los ejes en la imagen. Y las adicionales son necesarias para mostrar las marcas positivas.

2) Configuramos la visualización de las marcas en los ejes:

max = 1.5 # Para flexibilidad
min = -max
set xtics  axis  0,.5,max en escala 0.5,0.25 espejo no girar autojustificar desplazamiento 0.35
set ytics  axis .5,.5,max en escala 0.5,0.25 espejo no girar autojustificar            
set x2tics axis .5,.5,max en escala 0.5,0.25 espejo no girar autojustificar            
set y2tics axis .5,.5,max en escala 0.5,0.25 espejo no girar autojustificar            

Con las marcas en los ejes hay un poco más de configuraciones.
axis — donde estarán las marcas, en el eje o (borde — en el límite).
Para el eje x, que se extiende hacia la derecha 0,.5,max. El primer número es el inicio del conteo, el segundo es el paso, el tercero es el final del conteo. Para el primero desde 0, y para los demás desde 0.5, para que los ceros no se interpongan al inicio de las coordenadas.

Gnuplot 5.0. Spiderplot en 4 ejes hecho a mano
Gnuplot 5.0. Spiderplot en 4 ejes hecho a mano

Mezcla de ceros en el centro de las coordenadas.
Todos los intervalos *tics están configurados como 0,.5,max
Sin desplazamiento 0.35 para xtics

Configuración escala 0.5,0.25 espejo agrega muescas al eje. Si se juega con los números, se cambiará su tamaño.
También introduzco variables max, min, mediante las cuales controlo los límites de los ejes del gráfico.
Puede encontrar información adicional sobre la configuración de las marcas en la documentación en la sección Xtics.

3) Configuramos los rangos de los ejes:

set xrange  [ min : max ] 
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

Aquí hay que mencionar que 2 ejes comienzan el conteo desde min en aumento y 2 ejes — desde max en disminución.
Más información en la sección Xrange.

4) Asignamos nombres a los ejes y los colocamos de forma ordenada:

set label "H_1" at 0, max center offset char 2, 0
set label "H_2" at max+0.1, 0 center offset char -1, 1
set label "H_3" at 0, min center offset char -2, 0
set label "H_4" at min, 0 center offset char 0, 1

5) Formamos los datos de entrada
Cada gráfico tiene 2 columnas. El número de línea es el número del eje, la quinta línea para cerrar el contorno. La columna impar es la coordenada x, la par es y. Dado que todos los puntos están en los ejes, una de las pares (x, y) siempre es igual a cero.
A pesar de que los 4 ejes son positivos, algunos datos se trasladan artificialmente a la mitad negativa, porque están en los ejes principales. x y y.

 0  1  0     1.21
 1  0  1.21  0   
 0 -1  0    -1.06
-1  0 -1.19  0   
 0  1  0     1.21 #Duplicar el primer punto

Resultado
Gnuplot 5.0. Spiderplot en 4 ejes hecho a mano
Código completo

#!/usr/bin/gnuplot -persist
#файл в кодировке cp1251 чтоб русские буквы отображались в eps

set encoding cp1251
set terminal postscript eps enhanced monochrome size 5cm,5cm
set output "./img/eps/fig2.eps"

unset border
set key at -2, 1.5 font 'LiberationSerif, 23' 
set key left top samplen 4.5

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

max = 1.5
min = -max

set xtics  axis  0,.5,max in scale 0.5,0.25 mirror norotate  autojustify offset 0.35 font 'LiberationSerif, 20
set ytics  axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify             font 'LiberationSerif, 20
set x2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify             font 'LiberationSerif, 20
set y2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify             font 'LiberationSerif, 20

set xrange  [ min : max ]
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

set label "H_1" at  0,       max center offset char  2, 0   font 'LiberationSerif, 23'
set label "H_2" at  max+0.1, 0   center offset char -1, 1   font 'LiberationSerif, 23'
set label "H_3" at  0,       min center offset char -2, 0   font 'LiberationSerif, 23'
set label "H_4" at  min,     0   center offset char  0, 1   font 'LiberationSerif, 23'

set style line 1 linetype 1 pointtype 7 linewidth 3 linecolor black
set style line 2 linetype 2 pointtype 7 linewidth 3 linecolor black

plot 'data.csv' using  1:2 title "1" w lp ls 1 ,
     'data.csv' using  3:4 title "2" w lp ls 2

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster