2010-10-15 86 views

回答

87

您可以创建这种绘制自己很容易地使用内置功能imagesctext,并调整图形对象的许多参数。这里有一个例子:

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]); 

,这里是这个生成数字:

alt text

如果遇到与x轴刻度标签你选择太宽,彼此重叠的麻烦,这里的你如何处理它:MATLAB的

  • 新版本:不知道这已经rsion已添加,但在较新版本中,轴对象现在具有'{X | Y | Z} TickLabelRotation',它允许您旋转标签并使其更好地适应它们。

  • 旧版本的MATLAB:对于老版本,你可以找到一些MathWorks File Exchange提交,可以从Brian Katz旋转刻度标签文本,像XTICKLABEL_ROTATE

+1

+1:比我提供的更好的展示。 – 2010-10-15 16:04:20

+4

对于更一般的解决方案,您应该比较'mean(get(gca,'CLim'))''而不是'0.5'来确定灰度色彩地图背景上文本的颜色。 – Amro 2010-10-15 17:50:14

+0

@Amro:好的建议!我将它整合到代码中。 – gnovice 2010-10-15 18:09:38

1

我希望你能说服Matlab来绘制,如果你看看文件交换你会发现已经有人写的代码。但如果你没有代码,使用MS Excel会更容易。

编辑:所以我给了这个更多的想法,这就是我想出的。我还没有掌握如何发布图形,所以请相信我,这会带领您找到解决方案。但使用Excel会更容易。

首先用你的数据值定义一个矩阵;我在下面称为矩阵G。然后执行命令:

image(G); 
colormap(gray) 

现在,我不得不做一些摆弄周围,重新调整数据,以获得良好的图形,但这应该产生与数值轴的灰度的情节。现在,进入你的数字窗口并打开绘图工具。

选择X轴并点击Ticks按钮。您现在需要做的就是将标签编辑为您想要的文本。对Y轴做同样的事情。将数字写在图上的正方形中 - 使用“注解”菜单中的“文本框”。

经过大量的摆弄之后,你会得到你想要的图形。此时,我建议您选择菜单命令File |生成M-File并做到这一点。如果你想在将来以编程方式创建这样的图形,只需将生成的M文件转换为适当的功能,即可实现所需功能。

但在Excel中它仍然更容易。

1

如果您只关心在矩阵中查看零/非零条目(例如,如果它稀疏),请使用spy

否则,使用imagesc

PS:我无法访问您的图像