Ao trabalhar na visualização de dados de um artigo, tornou-se necessário ter 4 eixos com rótulos positivos em todos.Como em outros gráficos de artigos, decidi usar o gnuplot . Primeiro de tudo, eu olhei para o site oficial, onde há muitos exemplos. Fiquei muito feliz ao encontrar o exemplo necessário (não vou trabalhar muito com um arquivo e será lindo, pensei).
Copie o código rapidamente, execute-o. Eu recebo um erro. Compreendo. Descobri que eu tenho um gnuplot antigo ( Version 5.0 patchlevel 3 last modified 2016-02-21
) e não tem.Conhecendo a flexibilidade do gnuplot, ele começou a vasculhar a rede mundial de computadores e encontrou vários exemplos adequados sobre o fluxo de pilha ( eixo x duplo em um gráfico de aranha com Gnuplot e Como criar um gráfico de aranha no Gnuplot? ) E github ( gnuplot-radarchart ). Eles se tornaram o ponto de partida.Além disso, minhas manipulações com os comandos levaram ao seguinte:0) Desligar as bordasunset border
1) Crie 4 linhas zero - 2 principais e 2 adicionais:set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Algumas palavras sobre as zero linhas na documentação . Esta operação permite reduzir o eixo ao centro da imagem. E são necessários outros adicionais para exibir tiques positivos neles.2) Configure a exibição de ticks nos eixos: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
Com carrapatos nos eixos das configurações um pouco mais.axis
- onde os carrapatos estarão localizados, no eixo ou (borda - na borda).Para um eixo x
que vai para a direita 0,.5,max
. O primeiro número é a origem, o segundo é o passo, o terceiro é o fim da contagem. Para o primeiro de 0
e para o restante de 0.5
, de modo que os zeros não interfiram na origem.A configuração scale 0.5,0.25 mirror
adiciona serifas ao eixo. Se você brinca com números, o tamanho deles muda.Também introduzo variáveis max, min
com as quais controlo os limites dos eixos do gráfico.Para obter mais informações sobre como configurar tiques, consulte a documentação na seção Xtics .3) Configure faixas de eixos:set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Note-se que 2 eixos começam a contar a partir do min
aumento e 2 eixos começam a max
diminuir.Veja a seção Xrange para mais informações .4) Nós damos nomes aos eixos e os colocamos de maneira agradável: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.Cadacoluna possui 2 colunas. Número da linha - número do eixo, quinta linha para fechar o loop. Coluna ímpar - coordenada x
, par - y
. Como todos os pontos estão localizados nos eixos, um dos pares (x, y)
é sempre igual a zero.Apesar de todos os quatro eixos serem positivos, alguns dados são artificialmente movidos para a metade negativa, porque 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 #
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