说实话不太建议在“任意不均匀”的y轴上作图,毕竟这样会给数据解读带来一定困难,有时候甚至会误导。一般比较常见的是像你举例的图里那样,简单地去合并线性和对数坐标轴。这个在matlab里倒是不难实现。 % generate data
x = 0:1000;
[xmin, xmax] = bounds(x);
y = x;
y_cutoff = 10;
% plot in two axes
figure;
ax1 = axes(...
'Units' , 'normalized', ...
'Position' , [0.1 0.1 0.8 0.4]);
ax2 = axes(...
'Units' , 'normalized', ...
'Position' , [0.1 0.5 0.8 0.4]);
y1 = y; y1(y>y_cutoff) = NaN;
y2 = y; y2(y不想要细网格的话就把最后的grid()命令去掉,但我其实推荐保留。简单来说就是先把数据按照两y轴的数值分界点给分成两块,在ax1和ax2分别画出。然后通过设置axes属性来调整ax2的尺度和其他装饰性内容。保险起见最后可以考虑再加个uistack()命令去把ax1置于上层,不过不是必须。 更灵活的y轴尺度也可以实现,但相对而言就没有这个方法稳健了。而且真的不推荐。
|