当 z 值为 0 且对数 ZScale 时,绘图将不正确地呈现。这是连贯的,因为 log10(0) = -inf。
例子:
Y = cool(7);
bar3(Y)
set(gca,'ZScale','log')
但是我怎样才能从图中删除这个 0 条?
Mathworks ( http://www.mathworks.nl/support/solutions/en/data/1-2VFT6X/?product=ML&solution=1-2VFT6X )给出的解决方案如下:
Y = cool(7);
bar3(Y)
set(gca,'ZScale','log')
llim = .1;
h = get(gca,'Children');
for i = 1:length(h)
ZData = get(h(i), 'ZData');
ZData(ZData==0) = llim;
set(h(i), 'ZData', ZData);
end
此解决方案将 0 值替换为 0.1(然后 log10(0.1) = -1),但我想删除 0 条,而不是绘制 -1 条。
我还尝试将所有 0 值设置为 NaN如何在 MATLAB 中的 bar3 图中隐藏零值但将 ZScale 设置为 log 不喜欢它。
有什么建议吗?
提前致谢
编辑: 我看到的最简单的解决方案是手动应用对数刻度:
Y = cool(7);
Y = log10(Y);
Y(Y==-inf)=NaN;
bar3(Y)