我想使用bar3
绘图显示三维直方图。使用相对于x轴,y轴和z轴的线性标度给出以下结果:
然而,由于z值具有非常大的间隔,我想使用对数z轴,使得较低的z值也是可见的。但是,将z轴设置为set(gca, 'ZScale', 'log');
的对数会产生以下图,看起来不太好:
我需要设置一些额外的选项,还是已知错误?
提前致谢!
答案 0 :(得分:2)
这是一个相当常见的问题,Matlab中的log轴具有非标准绘图功能或对图的修改,例如trying to use transparency with log axis
bar3生成的绘图需要doesn't support logarithmic axis的OpenGL渲染器。
通过转换数据和设置刻度线/标签来模拟日志轴
以下创建带有日志轴的图表以获取刻度线和标签,清除轴然后再次开始使用已转换的刻度线和标签绘制数据的日志。
bar3(Z);
set(gca,'Zscale','log')
ticks=get(gca,'Ztick');
ticklabel=str2num(get(gca,'ZtickLabel'));
set(gca,'Zscale','linear')
cla
bar3(log(Z));
set(gca,'Ztick',log(ticks));set(gca,'ZtickLabel',10.^ticklabel)
仅丢失刻度标签的格式。
此方法对0-1
范围内bar3
范围内的值效果不佳,因为情节被反转而且负面导致问题log
在任何一种情况下都需要进一步变换。但是,如果查看给出的图中的数据,这应该不是问题。