matlab - 在条形图中设置条形图的透明度并将 y 轴设置为对数刻度 - 但两者似乎都不适用于 MATLAB

标签 matlab matlab-figure

在 MATLAB 中,我想将条形图中条形的透明度设置为 0.3,并将 y 轴设置为对数刻度 - 但两者似乎都不起作用......

subplot('Position',[0.15 0.7 0.45 0.15]);
data = [1 2 5 4 7 4 1];
B = bar(data,'g');
ch = get(B,'child');
set(ch,'facea',.3)

这很好用,但还要加上这个:

set(gca,'YScale','log');

并且透明度设置不起作用。有任何想法吗?谢谢!

最佳答案

Log Scale 轴和透明度在 Matlab 中不能一起使用

为什么?

OpenGl 渲染器(必须用于透明度)不支持对数轴 - 这显然在 2010b 的文档中并且也提到了 here

解决方案

通过转换数据和设置 Yaxis 刻度模拟 Log 轴

下面的代码制作带有对数轴的条形图,获取所需的属性,清除轴,然后使用信息模拟对数轴
代码:

subplot('Position',[0.15 0.7 0.45 0.15]);
data = [1 2 5 4 7 4 1];
B = bar(data,'g');
set(gca,'Yscale','log')
ticks=get(gca,'Ytick');
ticklabel=str2num(get(gca,'YtickLabel'));
set(gca,'Yscale','linear')
cla

B = bar(log(data),'g');
set(gca,'Ytick',log(ticks));set(gca,'YtickLabel',10.^ticklabel)
ch = get(B,'child');
set(ch,'facea',.3)

唯一的损失是刻度标签的格式。
最后,当应用于负面数据时,我不能保证任何事情,尽管它几乎肯定会发出警告并且无法正常工作!

关于matlab - 在条形图中设置条形图的透明度并将 y 轴设置为对数刻度 - 但两者似乎都不适用于 MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23622802/

相关文章:

Matlab - "seal"一个图形,这样绘图就不会覆盖它,但会自动创建一个新图形

matlab - 用点划线和虚线绘制问题 : How to modify default linestyles for better use with vector renderer 'painters' ?

matlab - 带动画的实时脚本

c++ - 实现 Eigen 库伪逆函数的 MEX 文件崩溃

matlab - 使用每个 y 轴的两个向量格式化plotyy

matlab - 如何关闭发生错误后仍处于打开状态的文件?

python - 为什么 matlab 中的反向 for 循环更快

matlab - 避免在 Matlab 中保存图形

matlab - 如何将 XTickLabel 重置为默认值

MATLAB,关闭绘图上的数字