2010-10-15 9 views

Trả lời

87

Bạn có thể tạo loại này vẽ cho mình khá dễ dàng bằng cách sử dụng built-in chức năng imagesctext và điều chỉnh một số tham số cho đối tượng đồ họa.Dưới đây là một ví dụ:

mat = rand(5);   %# A 5-by-5 matrix of random values from 0 to 1 
imagesc(mat);   %# Create a colored plot of the matrix values 
colormap(flipud(gray)); %# Change the colormap to gray (so higher values are 
         %# black and lower values are white) 

textStrings = num2str(mat(:),'%0.2f'); %# Create strings from the matrix values 
textStrings = strtrim(cellstr(textStrings)); %# Remove any space padding 
[x,y] = meshgrid(1:5); %# Create x and y coordinates for the strings 
hStrings = text(x(:),y(:),textStrings(:),...  %# Plot the strings 
       'HorizontalAlignment','center'); 
midValue = mean(get(gca,'CLim')); %# Get the middle value of the color range 
textColors = repmat(mat(:) > midValue,1,3); %# Choose white or black for the 
              %# text color of the strings so 
              %# they can be easily seen over 
              %# the background color 
set(hStrings,{'Color'},num2cell(textColors,2)); %# Change the text colors 

set(gca,'XTick',1:5,...       %# Change the axes tick marks 
     'XTickLabel',{'A','B','C','D','E'},... %# and tick labels 
     'YTick',1:5,... 
     'YTickLabel',{'A','B','C','D','E'},... 
     'TickLength',[0 0]); 

và đây là con số này tạo ra:

alt text

Nếu bạn chạy vào rắc rối với các nhãn đánh dấu trục x bạn chọn quá rộng và một chồng chéo khác, đây là làm thế nào bạn có thể xử lý nó:

  • Mới hơn phiên bản của MATLAB: Không chắc đó đã rsion này đã được thêm vào, nhưng trong các phiên bản mới hơn, các đối tượng trục bây giờ có properties '{X | Y | Z} TickLabelRotation', cho phép bạn xoay các nhãn và phù hợp với chúng hơn.

  • phiên bản cũ của MATLAB: Đối với các phiên bản cũ hơn, bạn có thể tìm thấy một số đệ trình trên MathWorks File Exchange có thể xoay văn bản nhãn đánh dấu, như XTICKLABEL_ROTATE từ Brian Katz.

+1

+1: Triển lãm tốt hơn nhiều so với tôi đã cung cấp. –

+4

cho giải pháp tổng quát hơn, bạn nên so sánh với 'mean (get (gca, 'CLim'))' thay vì '0,5' để xác định màu của văn bản trên nền màu xám xám. – Amro

+0

@Amro: Đề xuất tốt! Tôi kết hợp nó vào mã. – gnovice

1

Tôi hy vọng bạn có thể thuyết phục Matlab để vẽ đó, nếu bạn nhìn vào Sở Giao dịch tập tin bạn có thể thấy ai đó đã viết mã. Nhưng nó sẽ dễ dàng hơn nhiều, nếu bạn không có mã, để sử dụng MS Excel.

EDIT: Vì vậy, tôi đã đưa ra một số suy nghĩ và đây là những gì tôi nghĩ ra. Tôi đã không làm chủ được đồ họa gửi lên SO, vì vậy tôi tin tưởng, điều này sẽ dẫn bạn đến một giải pháp. Nhưng nó sẽ thành thật hơn với Excel.

Đầu tiên xác định ma trận với các giá trị dữ liệu của bạn; Tôi gọi ma trận G trong phần sau. Sau đó, thực hiện các lệnh:

Bây giờ, tôi phải làm một số việc khó hiểu Bây giờ, đi đến cửa sổ hình của bạn và mở các công cụ cốt truyện.

Chọn trục X và nhấn nút Ticks. Tất cả những gì bạn phải làm bây giờ là chỉnh sửa nhãn cho các văn bản mà bạn muốn. Làm tương tự cho trục Y. Viết các số vào ô vuông trên ô - sử dụng Hộp văn bản từ menu Ghi chú.

Sau nhiều điều không quan tâm về bạn sẽ có đồ họa bạn muốn. Tại thời điểm này, tôi đề nghị bạn chọn lệnh menu File | Tạo M-File và làm điều đó. Nếu bạn muốn tạo đồ họa như vậy trong tương lai, chỉ cần bật tệp M được tạo thành một hàm phù hợp để thực hiện những gì bạn muốn.

Nhưng Excel vẫn dễ dàng hơn nhiều.

1

Nếu bạn chỉ quan tâm đến việc xem các mục nhập không/không khác trong ma trận của mình (ví dụ: nếu nó thưa thớt), hãy sử dụng spy.

Khác, sử dụng imagesc.

PS: Tôi không thể truy cập hình ảnh của bạn