2014-12-09 27 views
5

Tôi thấy biểu đồ này và chỉ vì lợi ích tò mò đã tự hỏi liệu có thể vẽ hình với nhiều trục y như trong hình enter image description hereCách vẽ nhiều trục y?

Rất cám ơn!

Trả lời

4

Khi andyras đã viết, bạn có thể sử dụng trục y thứ hai nếu bạn chỉ có hai bộ dữ liệu. Trong trường hợp này, bạn cũng cần phải để

set ytics nomirror # remove the tickmarks of the left ayis on the right side 
set y2tics   # make the right y-axis 'visible' 

Nếu bạn muốn vẽ nhiều hơn một tập dữ liệu, tôi sẽ đề nghị sử dụng multiplot. Bạn có thể chồng lên một số ô độc lập và đặt độ lệch duy nhất cho trục y cho mỗi ô. Tuy nhiên, bạn cần lưu ý rằng số lượng vị trí y-tics và y-tick là như nhau.

Lô:

enter image description here

(Tôi không quan tâm đến mấu chốt ở đây, điều này vẫn cần điều chỉnh)

Code:

set multiplot 


set xrange[0:10] 

# We need place to the left, so make the left margin 30% of screen 
set lmargin screen 0.3 

##### first plot 

set ytics 0.4 
set yrange[-1.2:1.2] 

set ylabel "Voltage" textcolor rgb "red" 

plot sin(x) 


##### Second plot 

set ytics 1 
set yrange[-3:3] 

set ytics offset -8, 0 
set ylabel "Current" offset -8, 0 textcolor rgb "green" 

plot 3*cos(x) linecolor 2 

##### Third plot 

set ytics 0.5 
set yrange[-1.5:1.5] 


set ytics offset -16, 0 
set ylabel "Power" offset -16, 0 textcolor rgb "blue" 
plot 3*sin(x)*cos(x) linecolor 3 

unset multiplot 
+0

Cảm ơn Sweber! Nhưng lệnh bù đắp đó vẫn còn khó hiểu. Dòng tham chiếu cho offset -8 hoặc -16 là gì? – kuki

+0

Giá trị offset mặc định là 0, do đó tham chiếu là trục điện áp trong cốt truyện của tôi. Nếu bạn chỉ định, bạn cũng có thể cung cấp cho một đơn vị, ví dụ: 'offset screen -0.2, 0' có nghĩa là 20% chiều rộng cửa sổ ở bên trái. Nếu không có 'màn hình', tôi nghĩ rằng nó có một cái gì đó giống như chiều rộng nhân vật/heigth. Kích thước ký tự là một đơn vị không phổ biến, nhưng thường hữu ích. – sweber

+0

Cảm ơn bạn đã làm rõ Sweber! – kuki

2

Có, bạn có thể có hai trục y miễn phí, ví dụ:

plot x, x**2 axes x1y2 

Các đặc điểm kỹ thuật axes cho phép bạn đặt mọi thứ trên x1y1, x2y1, vv Nếu bạn muốn có nhiều hơn hai điều vẽ trên các trục y cùng bạn phải bình thường hóa mọi thứ mình:

plot 'data1.dat' using 1:($2/MAX_1), \ 
    'data2.dat' using 1:($2/MAX_2), \ 
    'data3.dat' using 1:($s/MAX_3) 

Các biến MAX_X có thể được tính toán trước bằng cách sử dụng lệnh stats trong gnuplot 4.6+ hoặc bạn có thể đặt chúng theo cách thủ công.

+0

Cảm ơn Andyras! – kuki

Các vấn đề liên quan