
Ao trabalhar na visualização de dados para o artigo, surgiu a necessidade de ter 4 eixos com marcas positivas em todos eles.
Assim como para os outros gráficos do artigo, decidi usar gnuplot. Primeiro, fui ao site oficial, que possui muitos exemplos. Fiquei muito satisfeito quando encontrei o necessário (apenas vou dar uma pequena ajustada e ficará bonito, pensei eu).

Copiei rapidamente o código, executei. Recebi um erro. Investiguei. Descobri que minha versão do gnuplot era antiga (Version 5.0 patchlevel 3 last modified 2016-02-21) e ela não tem esse recurso.
Sabendo da flexibilidade do gnuplot, comecei a explorar as vastidões da web e encontrei alguns exemplos adequados no stackoverflow ( e ) e no github (). Eles se tornaram meu ponto de partida.
Em seguida, minhas manipulações com os comandos levaram ao seguinte:
0) Desativamos
unset border
1) Criamos 4 linhas zero - 2 principais e 2 adicionais:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Algumas palavras sobre as linhas zero em . Esta operação centraliza os eixos na imagem. As adicionais são necessárias para exibir as marcas positivas.
2) Configuramos a exibição das marcas nos eixos:
max = 1.5 # Para flexibilidade
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
A configuração das marcas nos eixos é um pouco mais elaborada.
axis — onde as marcas ficarão, no eixo ou (border — na borda).
Para o eixo x, que vai para a direita 0,.5,max. O primeiro número é o início da contagem, o segundo é o passo, o terceiro é o fim da contagem. Para o primeiro a partir de 0, e para os demais a partir de 0.5, para que os zeros não se misturem no início das coordenadas.


Mistura de zeros no centro das coordenadas.
Todos os intervalos *tics estão configurados como 0,.5,max
Sem offset 0.35 para xtics
Configuração scale 0.5,0.25 mirror adiciona marcas ao eixo. Se brincar com os números, o tamanho delas mudará.
Também defino as variáveis max, min, com as quais controlo os limites dos eixos do gráfico.
Mais informações sobre a configuração das marcas podem ser encontradas na documentação na seção .
3) Configuramos os intervalos dos eixos:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Aqui, vale mencionar que 2 eixos começam a contagem a partir de min em aumento e 2 eixos — a partir de max em redução.
Mais informações na seção .
4) Damos nomes aos eixos e os posicionamos de forma estética:
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 os dados de entrada
Para cada gráfico, são dedicadas 2 colunas. O número da linha é o número do eixo, e a quinta linha para fechar o contorno. A coluna ímpar representa a coordenada x, a par é y. Uma vez que todos os pontos estão localizados nos eixos, então de cada par (x, y) um sempre é igual a zero.
Apesar de todos os 4 eixos serem positivos, alguns dados são artificialmente movidos para a metade negativa, pois estão localizados nos eixos principais x e 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 #Duplicata do primeiro ponto
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
Fonte: habr.com
