gpt4 book ai didi

image - Contourf 和 NaNs(如何使白色区域透明)

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:35 26 4
gpt4 key购买 nike

我正在尝试绘制 contourf 图,但数据数组的某些区域有 NaN(仅在数据矩阵中,x 和 y meshgrid 矩阵是满的)。我希望这些 NaN 是透明的,它们用于矩形边界上的 NaN。但是,数据矩阵内的连续 NaN 区域是白色的而不是透明的。下面是一个例子:

代码:

[X Y] = meshgrid(10:50);
Z = X.*Y;
Z(10:30,10:30) = NaN;
figure
imshow(uint8(repmat(1:4:240,[60,1,3])));
hold on;
contourf(X,Y,Z);
colormap jet;

输出:

enter image description here

提示:

在上面的代码中附加:

% Find Face
set(findobj(h,'FaceColor',[1 1 1]),'FaceAlpha',0))

会找到白色的补丁对象并设置为透明。不幸的是,下面的补丁已满:

enter image description here

更新:获取 NaN 区域并叠加背景图像结果:

enter image description here

如您所见,它并没有覆盖整个图像。如果我使用 imdilate,它会去除白色区域,但同时也会破坏黑色边框和一些数据。

最佳答案

基于 H. Muster 的回答,我通过分割数据人为地创建了波段(您可以使用一个简单的函数来选择波段,或者使用虚拟图形上的 contour 创建它们,归还它们,并重新使用它们)。

[X Y] = meshgrid(10:0.1:50);
Z = X.*Y;
Z(100:300,100:300) = NaN;
figure
hold on;
h = pcolor(X,Y,round(Z/500)*500);
set(h,'Edgecolor', 'interp');
colormap jet;
set(gca, 'XLim', [0 60], 'YLim', [0 60]);

恐怕我没有包含 imread 的工具箱,因此无法显示底层渐变,但我认为这可行。我必须将分辨率提高 10 倍才能获得相当平滑的图像。

enter image description here

关于image - Contourf 和 NaNs(如何使白色区域透明),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15647727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com