MATLAB:同一图表上多个图的两个不同的y轴限制

时间:2017-08-13 09:56:29

标签: matlab plot

我需要在MATLAB中在同一个图上绘制两个图。 两个数据样本中的最大值和最小值都有很大的变化,我无法通过采用相同的y轴限制来绘制。 我不希望使用其他Overlaying two axes in a Matlab plot中解释的两个比例,但需要使用单个y轴并获得解决方案。 我尝试了代码:

x_axis_X = 1:length(S);
y_axis_Y = 1:length(N);
ylim([-1204200 -1841.6])
set(gcf,'color','w');
plot(x_axis_X, S,'o-', y_axis_Y, N, 'x-');

结果如图所示,其中绘制了一个没有正确y轴范围的数据样本。plot

第一个数据样本的y限制为-1204200到-1841.6,第二个数据样本的y限制为-489429345.5到-10408189.43。 如何将ylim定义为适合同一图中的两个图? 感谢您的投入。谢谢。

3 个答案:

答案 0 :(得分:1)

在旧版本的MATLAB中使用函数plotyy。在更新版本的MATLAB中使用yyaxis。以下是文档中的示例:

x = linspace(0,10);
y = sin(3*x);
yyaxis left
plot(x,y)

z = sin(3*x).*exp(0.5*x);
yyaxis right
plot(x,z)
ylim([-150 150])

enter image description here

答案 1 :(得分:0)

我尝试了缩放一个数据集的想法,使其具有与其他数据集相似的幅度。在这里,我将一个数据集乘以100(或任何合适的缩放参数),然后它将在大小上与其他数据集相似。为了清楚地提到图表中已经缩放了哪些数据,我使用了图例。

plot(x,data1,x,100*data2)
legend('data1','100*data2','location','southeast')

谢谢。

答案 2 :(得分:0)

Scaling is not the best option, as you may need to work with the data later. Also does not work if for instance, you need a log scale.

Matlab has a few ways to deal it with. I particularly like to use a new axes in the figure, as i have done in the example below.

Just in case, you also found this answer in a simple google search!

enter image description here

Code:

a=1:10;
b=(10:-1:1)*100;
x=1:10;
hold on
plot(x,a,'b')
pax1=get(gca,'Position'); %get axis position
ax2 = axes('Position',pax1); %create a new axis
plot(ax2,x,b,'r') %plot new data
set(ax2, 'Yaxislocation','right',...
'color','none') % set it transparent and to the right