繁体   English   中英

从bar3日志ZScale隐藏/删除具有零值的条

[英]hide/delete bars with zero values from a bar3 log ZScale

当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)

如果可以将对数z值替换为0.1,则可以将所有零值替换为10 ^ 0.1,因此在记录时,它们将变为0.1。

所以,

Y = cool(7);
Y(Y==0) = 10^0.1;
bar3(Y)
set(gca,'ZScale','log')

这将保留对数刻度轴的刻度线和标签。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM