我正在寻找一种方法来覆盖一个x-y时间序列,比如用“plot”创建的,在“courtoff”生成的显示之上,在y轴上有不同的缩放比例。
在两个x-y图的情况下,通常的方法是使用内置函数plotyy,只要输入参数保持不变(x,y),它甚至可以由函数而不是plot(比如loglog)驱动但是,因为在我的例子中,courtoff需要三个输入参数,“plotyy”似乎不适用下面是一些示例代码,描述了我要执行的操作:
x1 = 1:1:50;
y1 = 1:1:10;
temp_data = rand(10,50);
y2 = rand(50,1)*20;
figure; hold on;
contourf(x1,y1,temp_data);
colormap('gray');
plot(x1,y2,'r-');
理想情况下,我希望时间序列(x1,y2)在右侧显示自己的y轴,并将其缩放到与轮廓线图相同的垂直范围。
谢谢你的时间。
最佳答案
我不认为有一个“干净”的方法来做到这一点,但你可以通过把两把斧头叠加在一起来伪造它。
x1 = 1:1:50;
y1 = 1:1:10;
temp_data = rand(10,50);
y2 = rand(50,1)*20;
figure;
contourf(x1, y1, temp_data);
colormap('gray');
h_ax = gca;
h_ax_line = axes('position', get(h_ax, 'position')); % Create a new axes in the same position as the first one, overlaid on top
plot(x1,y2,'r-');
set(h_ax_line, 'YAxisLocation', 'right', 'xlim', get(h_ax, 'xlim'), 'color', 'none'); % Put the new axes' y labels on the right, set the x limits the same as the original axes', and make the background transparent
ylabel(h_ax, 'Contour y-values');
ylabel(h_ax_line, 'Line y-values');
实际上,这个“plot overlay”几乎肯定是
plotyy
函数在内部所做的。下面是输出示例(为了便于阅读,我增加了字体大小):