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
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 (
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
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
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 độ.
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
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
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ả
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