Gnuplot 5.0. DIY 4-axis spiderplot

gambar
Ketika mengerjakan visualisasi data untuk suatu artikel, menjadi perlu untuk memiliki 4 sumbu dengan label positif pada semua.


Seperti grafik artikel lainnya, saya memutuskan untuk menggunakan gnuplot . Pertama-tama, saya melihat situs web resmi, di mana ada banyak contoh. Saya sangat senang ketika saya menemukan contoh yang diperlukan (saya tidak akan bekerja banyak dengan file dan itu akan menjadi indah, saya pikir).
gambar
Dengan cepat menyalin kode, jalankan. Saya mendapatkan kesalahan. Saya mengerti. Ternyata saya punya gnuplot lama ( Version 5.0 patchlevel 3 last modified 2016-02-21) dan tidak tahu caranya.

Mengetahui fleksibilitas gnuplot, ia mulai mencari-cari di seluruh dunia web dan menemukan beberapa contoh yang sesuai pada stackoverflow ( sumbu x ganda pada plot laba-laba dengan Gnuplot dan Cara Membuat Spider Plot di Gnuplot? ) Dan github ( gnuplot-radarchart ). Mereka menjadi titik awal.

Selanjutnya, manipulasi saya dengan perintah menyebabkan hal-hal berikut:

0) Matikan perbatasan
unset border

1) Buat 4 garis nol - 2 utama dan 2 tambahan:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Beberapa kata tentang garis nol dalam dokumentasi . Operasi ini memungkinkan Anda mengurangi sumbu ke bagian tengah gambar. Dan tambahan diperlukan untuk menampilkan kutu positif pada mereka.

2) Konfigurasikan tampilan kutu pada sumbu:
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            

Dengan kutu pada sumbu pengaturan sedikit lebih.
axis- di mana kutu akan ditemukan, pada sumbu atau (perbatasan - di perbatasan).
Untuk sumbu xyang mengarah ke kanan 0,.5,max. Angka pertama adalah asal, yang kedua adalah langkah, yang ketiga adalah akhir hitungan. Untuk yang pertama dari 0, dan sisanya dari 0.5, sehingga nol tidak mengganggu asal.

Mencampur angka nol di tengah koordinatTanpa offset
Mencampur angka nol di tengah koordinat.
Semua interval *ticsdikonfigurasi sebagai0,.5,max
Tanpa offset 0.35untukxtics

Pengaturan scale 0.5,0.25 mirror menambahkan serif ke sumbu. Jika Anda bermain-main dengan angka, maka ukurannya akan berubah.
Saya juga memperkenalkan variabel max, min- variabel yang dengannya saya mengontrol batas sumbu grafik.
Untuk informasi lebih lanjut tentang pengaturan kutu, lihat dokumentasi di bagian Xtics .

3) Konfigurasikan rentang sumbu:
set xrange  [ min : max ] 
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

Perlu dicatat bahwa 2 sumbu mulai menghitung dari minkenaikan dan 2 sumbu mulai maxdari penurunan.
Lihat bagian Xrange untuk informasi lebih lanjut .

4) Kami memberikan nama sumbu dan menempatkannya dengan baik:
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) Kami membentuk data input
. Setiap kolom memiliki 2 kolom. Nomor baris - nomor sumbu, baris kelima untuk menutup loop. Kolom ganjil - koordinat x, genap - y. Karena fakta bahwa semua titik terletak pada sumbu, salah satu pasangan (x, y)selalu sama dengan nol.
Terlepas dari kenyataan bahwa semua 4 sumbu positif, beberapa data secara artifisial dipindahkan ke setengah negatif, karena mereka terletak di sumbu utama xdan 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 #  

Hasil
Total
Kode lengkap
#!/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