Gnuplot 5.0. Diagrama de araña de 4 ejes de bricolaje

imagen
Al trabajar en la visualización de datos para un artículo, se hizo necesario tener 4 ejes con etiquetas positivas en todos.


Al igual que con otros gráficos de artículos, decidí usar gnuplot . En primer lugar, miré el sitio web oficial, donde hay muchos ejemplos. Me alegré mucho cuando encontré el ejemplo necesario (no trabajaré mucho con un archivo y pensé que sería hermoso).
imagen
Copió rápidamente el código, ejecútelo. Me sale un error Entiendo. Resultó que tengo un viejo gnuplot ( Version 5.0 patchlevel 3 last modified 2016-02-21) y no lo tiene.

Conociendo la flexibilidad de gnuplot, comenzó a hurgar en la red mundial y encontró varios ejemplos adecuados sobre stackoverflow ( Doble eje x en un diagrama de araña con Gnuplot y Cómo crear un diagrama de araña en Gnuplot? ) Y github ( gnuplot-radarchart ). Se convirtieron en el punto de partida.

Además, mis manipulaciones con los comandos llevaron a lo siguiente:

0) Desactivar los bordes
unset border

1) Crear 4 líneas cero - 2 principales y 2 adicionales:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Algunas palabras sobre las líneas cero en la documentación . Esta operación le permite reducir el eje al centro de la imagen. Y se necesitan otros adicionales para mostrar marcas positivas en ellos.

2) Configure la visualización de ticks en los ejes:
max = 1.5 #  
min = -max
set xtics  axis  0,.5,max in scale 0.5,0.25 mirror norotate  autojustify offset 0.35
set ytics  axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify            
set x2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify            
set y2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify            

Con garrapatas en los ejes de la configuración un poco más.
axis- dónde se ubicarán las garrapatas, en el eje o (borde - en el borde).
Para un eje xque va a la derecha 0,.5,max. El primer número es el origen, el segundo es el paso, el tercero es el final del conteo. Para el primero desde 0, y para el resto desde 0.5, para que los ceros no interfieran en el origen.

Mezclar ceros en el centro de coordenadasSin compensación
Mezcla de ceros en el centro de coordenadas.
Todos los intervalos están *ticsconfigurados como0,.5,max
Sin offset 0.35paraxtics

La configuración scale 0.5,0.25 mirror agrega serif al eje. Si juegas con números, su tamaño cambiará.
También introduzco variables max, mincon las que controlo los límites de los ejes del gráfico.
Para obtener más información sobre cómo configurar los ticks, consulte la documentación en la sección Xtics .

3) Configurar rangos de ejes:
set xrange  [ min : max ] 
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

Cabe señalar que 2 ejes comienzan a contar desde el minaumento y 2 ejes a partir maxde la disminución.
Vea la sección Xrange para más información .

4) Damos los nombres de los ejes y los colocamos muy bien:
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 columna tiene 2 columnas. Número de línea: número de eje, quinta línea para cerrar el bucle. Columna impar - coordenada x, par - y. Debido al hecho de que todos los puntos están ubicados en los ejes, uno de un par (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, ya que se encuentran en los ejes principales xy 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 #  

Resultado
Total
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


All Articles