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).
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 bordesunset 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 x
que 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.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, min
con 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 min
aumento y 2 ejes a partir max
de 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 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 #
Resultado
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