首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何可视化显示颜色和值的矩阵?

如何可视化显示颜色和值的矩阵?
EN

Stack Overflow用户
提问于 2010-10-15 21:57:31
回答 4查看 96.5K关注 0票数 49

我想用MATLAB从一个双精度矩阵中创建这样的图像。

示例图像:

http://twitpic.com/2xs943

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-15 23:57:51

您可以使用内置的函数imagesctext并调整图形对象的许多参数,非常容易地自己创建这种绘图。下面是一个例子:

代码语言:javascript
运行
复制
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]);

这是它生成的图形:

如果你遇到了问题,你选择的x轴记号标签太宽,彼此重叠,下面是你如何处理的:

  • Newer版本的MATLAB: better.
  • Older不确定添加了哪个版本,但在较新的版本中,轴对象现在具有properties '{X|Y|Z}TickLabelRotation',它允许您旋转标签并适合它们。MATLAB的版本:对于旧版本,您可以在MathWorks File Exchange上找到一些可以旋转刻度标签文本的提交,例如来自MATLAB的XTICKLABEL_ROTATE
票数 90
EN

Stack Overflow用户

发布于 2010-10-15 22:55:23

代码语言:javascript
运行
复制
h = imagesc(magic(8))
impixelregion(h)

http://www.mathworks.com/help/toolbox/images/ref/impixelregion.html

需要图像处理工具箱

票数 18
EN

Stack Overflow用户

发布于 2010-10-15 22:16:22

我希望你能说服Matlab来画出来,如果你看一下文件交换,你可能会发现有人已经写了代码。但是,如果你没有代码,使用MS Excel会容易得多。

编辑:,所以我对此进行了更多的思考,这是我想出来的。我还没有掌握张贴图片,所以相信我,这将引导你走向一个解决方案。但老实说,使用Excel会更容易。

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

代码语言:javascript
运行
复制
image(G); 
colormap(gray)

现在,我不得不做一些摆弄,重新缩放数据,以获得一个好的图形,但这应该会产生一个带有数字轴的灰度图。现在,转到图形窗口并打开绘图工具。

选择X轴并点击Ticks按钮。您现在要做的就是将标签编辑为您想要的文本。对Y轴执行相同的操作。将数字写在绘图上的方块中--使用注释菜单中的文本框。

在做了很多工作之后,你会得到你想要的图形。此时,我建议您选择菜单命令File | Generate M-File并执行此操作。如果您想在将来以编程方式创建这样的图形,只需将生成的M文件转换为一个正确的函数,即可执行您想要的操作。

但在Excel中,这仍然容易得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3942892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档