Gnuplot 5.0. Spiderplot de 4 eixos DIY

imagem
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).
imagem
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 bordas
unset 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 xque 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 0e para o restante de 0.5, de modo que os zeros não interfiram na origem.

Misturando zeros no centro de coordenadasSem deslocamento
Misturando zeros no centro das coordenadas.
Todos os intervalos são *ticsconfigurados como0,.5,max
Sem offset 0.35porxtics

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, mincom 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 minaumento e 2 eixos começam a maxdiminuir.
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.Cada
coluna 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 xe 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