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).
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 perbatasanunset 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 x
yang 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.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 min
kenaikan dan 2 sumbu mulai max
dari 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 x
dan 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
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