
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 (solo tengo que trabajar un poco y quedará bonito, pensé).

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 ( y ) y github (). Estos se convirtieron en mi punto de partida.
Luego, mis manipulaciones con los comandos llevaron a lo siguiente:
0) Desactivamos
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 . 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.


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 .
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 .
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

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
