首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让NaN在Matlab中用imagsc显示不同的颜色?

如何让NaN在Matlab中用imagsc显示不同的颜色?
EN

Stack Overflow用户
提问于 2017-02-16 03:13:55
回答 1查看 1.1K关注 0票数 0

我在Matlab中有数据,我想为其创建一个热图样式图。通常的方法是使用imagesc,也可以使用自定义颜色映射。(例如,请参阅对此问题的公认答案:MATLAB heat map。)但是,如果数据包含NaNs,则不一定会执行我想要的操作。MathWorks Documentation声称该行为对于NaN是未定义的。在实践中,结果似乎是为颜色分配了颜色映射表中的最小值。

在NaN标记没有值可用的情况下,这可能会产生误导。最好将此显示设置为颜色映射表中的其他颜色。该怎么做呢?

我注意到另一个问题(Assign different color to NaN values in Matlab images),它有点类似。在我看来,这不是重复的,因为它通过一个不同的函数调用创建图像,可能具有自己的底层结构。

EN

回答 1

Stack Overflow用户

发布于 2017-02-16 03:13:55

在MathWorks网站上运行了许多声称这是不可能的答案后,我找到了以下解决方案:您可以随心所欲地更改每个色块的透明度。默认情况下,所有内容都是不透明的,但我将数据为NaN的值设置为透明。这与显式地将补丁的颜色设置为颜色映射表之外的颜色不同,但如果图中没有任何其他可能“显示”并导致混淆的内容,则此方法非常有效。在这种情况下,与NaN对应的区域显示为曲面上的“孔”,显示轴的背景颜色。数据在变量data中,轴值(分别)在xy中给定

代码语言:javascript
运行
复制
h = imagesc(x, y, data);
h.AlphaData = ones(size(h.CData)); 
h.AlphaData(isnan(h.CData)) = 0;

第一行创建图像,第二行将所有面片设置为不透明,最后一行将对应于NaN的面片设置为透明。尽管复制了默认行为,但第二行似乎是必需的,因为AlphaData的默认值是标量1,而我们需要它是1的矩阵才能使第三行工作。

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

https://stackoverflow.com/questions/42258159

复制
相关文章

相似问题

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