在 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/