我需要在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限制为-1204200到-1841.6,第二个数据样本的y限制为-489429345.5到-10408189.43。 如何将ylim定义为适合同一图中的两个图? 感谢您的投入。谢谢。
答案 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])
答案 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!
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