gpt4 book ai didi

matlab - bar3 仅显示顶面,使用对数刻度时

转载 作者:太空宇宙 更新时间:2023-11-03 20:29:00 24 4
gpt4 key购买 nike

运行时

hBar = bar3(rand(6,8));

%// set(gca,'Zscale','log') % Problem when using log scale

for k = 1:length(hBar)
zdata = hBar(k).ZData;
hBar(k).CData = zdata;
hBar(k).FaceColor = 'interp';
end

一切顺利

enter image description here

但是,如果我在将 Z 轴设置为对数刻度的行中发表评论,则条形的主体会消失...

enter image description here

为什么会这样?

最佳答案

正如 thewaywewalk 评论的那样,这不能开箱即用的原因是,这些条形图沿着 z 轴从 0 到给定值,并且对数标度上的 0 无限远。 bar3 不提供指定除 0 以外的基线值的方法。但是,可以通过 hack 实现此目的。

绘制数据后

hBar = bar3(rand(6,8));

我们操纵 hBar 中返回的底层表面数据:

baseline = 0.1;
for i = 1 : numel(hBar)
z = get(hBar(i), 'ZData');
z(z == 0) = baseline;
set(hBar(i), 'ZData', z)
end

此代码假定表面 ZData 中的每个精确 0 都指的是条形图的底部,并用第一行中选择的 baseline 替换该值。现在是对数刻度

set(gca,'Zscale','log')

提供有用的显示,例如:

因为一些 rand 值低于我们选择的基线 0.1,所以一些条形向下延伸,当然这可以通过以匹配的方式选择数据和基线来避免。

关于matlab - bar3 仅显示顶面,使用对数刻度时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28793119/

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