您可以创建两个子图并将它们放在一起
% plotting
figure;
p1 = subplot(2,1,1);
idx = x>=0; plot(vector(idx), x(idx));
p2 = subplot(2,1,2);
idx = x<=0; plot(vector(idx), x(idx));
% Make x-axis limits the same (must use datenum)
lims = datenum([min(vector), max(vector)]);
xlim(p1, lims); xlim(p2, lims);
% Make the plots meet in the middle
h = 0.45; w = 0.9; % height and width
set(p1, 'position', [(1-w)/2, 0.5, w, h])
set(p2, 'position', [(1-w)/2, 0.5-h, w, h])
% Ensure the y axes meet at 0
ylim(p1, [0, max(x)]); ylim(p2, [min(x), 0]);
这两个单独的情节可以按照你喜欢的方式完成。因此,如果您使用相关方法绘制它们,您将得到一个具有指数 y 轴和一个具有对数 y 轴的方法。
您可以使用而不是上面的 plot(...) 行
% log y plot
semilogy(datenum(vector(idx)), x(idx))
请注意,此操作的输出完全符合预期,但您尝试执行的实际绘图听起来非常混乱。如果轴确实想要不同,在大多数情况下将其呈现为两个单独的图可能会更好。在这种情况下,请使用上面没有position 行的代码!
在弄乱绘图类型之前,这是输出的样子,0 线上方和下方的 y 轴是完全独立的,因为这实际上是 2 个绘图: