2013-10-05 17 views
12

Tôi muốn vẽ một ma trận 18x18 với gnuplot. Đây là mã số của tôi:Ma trận 2D của âm mưu Gnuplot với hình ảnh, muốn vẽ đường viền cho mỗi ô

set size ratio 1 
set palette gray negative 
set xrange[-0.5:17.5] 
set yrange[-0.5:17.5] 
set cbrange[-0.2:0.8] 
set xtics 0,1,17 
set ytics 0,1,17 
set xtics offset -0.5,0 
set title "Resolusition Matrix for E" 
plot "Mat" matrix w image noti 

Sau đó, tôi có một vả như thế này:

enter image description here

Bây giờ tôi muốn thêm biên giới để mỗi tế bào, mà sẽ trông như thế này:

enter image description here

Cảm ơn bạn.

Trả lời

13

Đối với trường hợp của bạn, bạn có thể thiết lập một tic nhỏ, sau đó nằm trên biên giới giữa hai pixel, và vẽ một lưới trên chúng:

set size ratio 1 
set palette gray negative 
set autoscale xfix 
set autoscale yfix 
set xtics 1 
set ytics 1 
set title "Resolution Matrix for E" 

set tics scale 0,0.001 
set mxtics 2 
set mytics 2 
set grid front mxtics mytics lw 1.5 lt -1 lc rgb 'white' 
plot "Mat" matrix w image noti 

Lưu ý, rằng set grid front cũng mang tics vào phía trước. Để tránh điều đó, bạn có thể chia tỷ lệ các câu chuyện thành 0. Đối với các câu chuyện nhỏ, bạn phải sử dụng một số rất nhỏ, 0 sẽ bỏ qua các đường lưới trên các hình nhỏ.

Kết quả với 4.6.3 là:

enter image description here

EDIT: Để kiểm soát các đường lưới và nhãn tic một cách độc lập, bạn có thể sử dụng không sử dụng x2y2 để vẽ lưới (lấy cảm hứng từ câu trả lời cho How do I draw a vertical line in gnuplot?):

set size ratio 1 
set palette gray negative 
# grid lines 
set x2tics 1 format '' scale 0,0.001 
set y2tics 1 format '' scale 0,0.001 
set mx2tics 2 
set my2tics 2 

# labeling 
set xtics 5 out nomirror 
set ytics 5 out nomirror 

set grid front mx2tics my2tics lw 1.5 lt -1 lc rgb 'white' 

set xrange[-0.5:39.5] 
set yrange[-0.5:39.5] 
set x2range[-0.5:39.5] 
set y2range[-0.5:39.5] 

plot "Mat" matrix w image notitle 

với gnuplot phiên bản 4.6, điều này đòi hỏi thiết lập dãy rõ ràng, do đó xx2 (không sử dụng!) Bằng nhau. Thông tin có thể được trích xuất với stats từ tệp dữ liệu.

Sử dụng phiên bản 5 cho phép bạn sử dụng set link. Thay vì tất cả các công cụ set *range. Bạn có thể sử dụng:

set autoscale fix 
set link x 
set link y 

Kết quả:

enter image description here

+0

Awesome, ý kiến ​​tốt! Cảm ơn bạn Christoph! – Kai

+0

Đây là một vấn đề khác. Tôi có một ma trận lớn hơn 80x80, nhãn trông rất bận. Tôi muốn tránh những con số bên dưới các tics nhưng giữ cho các tics mình để hiển thị lưới điện. – Kai

+0

Tôi sử dụng 'set format y" "' đã xóa chúng. – Kai

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