Gnuplot 5.0. DIY Spiderplot trên 4 trục

Gnuplot 5.0. DIY Spiderplot trên 4 trục
Khi làm việc về trực quan hóa dữ liệu cho một bài viết, cần phải có 4 trục có nhãn dương trên tất cả.

Cũng như các biểu đồ khác trong bài viết, tôi quyết định sử dụng gnuplot. Trước hết, tôi đã xem trang web chính thức, nơi có rất nhiều ví dụ. Tôi rất vui khi tìm được người phù hợp Ví dụ (Tôi sẽ làm việc với một tập tin một chút và nó sẽ rất đẹp, tôi nghĩ vậy).
Gnuplot 5.0. DIY Spiderplot trên 4 trục
Tôi nhanh chóng sao chép mã và chạy nó. Tôi gặp lỗi. Tôi đang tìm hiểu nó. Hóa ra tôi có một gnuplot cũ (Version 5.0 patchlevel 3 last modified 2016-02-21) và anh ấy không thể làm điều đó.

Biết về tính linh hoạt của gnuplot, tôi bắt đầu lùng sục trên World Wide Web và tìm thấy một số ví dụ phù hợp trên stackoverflow (Trục x kép trên biểu đồ nhện với Gnuplot и Làm thế nào để tạo một âm mưu nhện trong Gnuplot?) và github (gnuplot-radarchart). Họ đã trở thành điểm khởi đầu.

Hơn nữa, các thao tác của tôi với các lệnh đã dẫn đến những điều sau:

0) Vô hiệu hóa ranh giới

unset border

1) Tạo 4 dòng 2 - 2 dòng chính và XNUMX dòng bổ sung:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Một vài lời về dòng XNUMX trong tài liệu. Thao tác này cho phép bạn đưa các trục về giữa hình ảnh. Và những cái bổ sung là cần thiết để hiển thị các dấu tích tích cực trên chúng.

2) Thiết lập hiển thị dấu tích trên các trục:

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            

Với các dấu tích trên trục, có thêm một chút cài đặt.
axis - nơi các dấu tích sẽ nằm, trên trục hoặc (đường viền - trên đường viền).
Đối với trục x, đi về bên phải 0,.5,max. Số đầu tiên là bắt đầu đếm ngược, số thứ hai là bước, số thứ ba là kết thúc đếm ngược. Lần đầu tiên từ 0, và phần còn lại từ 0.5, sao cho các số XNUMX không can thiệp vào gốc tọa độ.

Gnuplot 5.0. DIY Spiderplot trên 4 trục
Gnuplot 5.0. DIY Spiderplot trên 4 trục

Trộn số không tại trung tâm tọa độ.
Tất cả các khoảng thời gian *tics được cấu hình như 0,.5,max
Không có offset 0.35 cho xtics

điều chỉnh scale 0.5,0.25 mirror thêm các rãnh vào trục. Nếu bạn chơi với những con số, kích thước của chúng sẽ thay đổi.
Tôi cũng nhập biến max, min, với sự trợ giúp của nó, tôi kiểm soát ranh giới của các trục đồ thị.
Thông tin bổ sung về cài đặt dấu tích có thể được tìm thấy trong tài liệu trong phần Xtics.

3) Thiết lập phạm vi trục:

set xrange  [ min : max ] 
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

Cần lưu ý ở đây là 2 trục bắt đầu từ min để phóng đại và 2 trục - với max Làm giảm xuống.
Thông tin bổ sung trong phần Xphạm vi.

4) Đặt tên cho các trục và đặt chúng cho đẹp:

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) Hình thành dữ liệu đầu vào
Mỗi biểu đồ có 2 cột. Số dòng - số trục, dòng thứ năm để đóng vòng lặp. Cột lẻ - tọa độ x, thậm chí - y. Do tất cả các điểm đều nằm trên trục nên từ cặp (x, y) một luôn bằng không.
Mặc dù cả 4 trục đều dương nhưng một số dữ liệu được chuyển sang nửa âm một cách giả tạo vì nó nằm trên các trục chính x и 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 #Дубликат первой точки

Kết quả
Gnuplot 5.0. DIY Spiderplot trên 4 trục
Mã đầy đủ

#!/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

Nguồn: www.habr.com

Thêm một lời nhận xét