您可以隐藏zero values in a bar3 plot,但该解决方案不能直接适用到hist3()
,即使解决方法类似于时尚。
以下是基于imdilate()
的解决方法,需要图像处理TB,我希望看到建议 独立于工具箱(只有Stats TB才行)。
% Example graph
hist3([2 0; 0 1; 1 1],[2 2])
% handle to graph3d.surfaceplot
h = get(gca,'child');
% retrieve the heights
heights = get(h,'Zdata');
% Index outer heights leaving a contour of zeros
mask = ~logical(imdilate(heights,ones(3)));
% Set the zero heights to NaN
heights(mask) = NaN;
% Final result
set(h,'ZData',heights)
以下是heights
:
heights =...
[0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 1 1 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 0 1 1 0 0
0 1 1 0 0 0 1 1 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0]
mask =...
[1 1 1 1 1 0 0 0 0 1
1 1 1 1 1 0 0 0 0 1
1 1 1 1 1 0 0 0 0 1
1 1 1 1 1 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 0 0 0 0 1
0 0 0 0 1 0 0 0 0 1
0 0 0 0 1 0 0 0 0 1
0 0 0 0 1 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1]
heights =...
[NaN NaN NaN NaN NaN 0 0 0 0 NaN
NaN NaN NaN NaN NaN 0 1 1 0 NaN
NaN NaN NaN NaN NaN 0 1 1 0 NaN
NaN NaN NaN NaN NaN 0 0 0 0 NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
0 0 0 0 NaN 0 0 0 0 NaN
0 1 1 0 NaN 0 1 1 0 NaN
0 1 1 0 NaN 0 1 1 0 NaN
0 0 0 0 NaN 0 0 0 0 NaN
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN]
答案 0 :(得分:3)
您可以将imdilate(height, ones(3))
替换为
filter2(ones(3), height)
或
conv2(ones(3), height, 'same')
并且都不需要工具箱。