如何增加两个Matlab图?

时间:2014-10-20 13:02:44

标签: matlab plot

我想绘制具有相同x轴但具有不同y轴的两个图,一个堆叠在另一个之上。下面有一个类似的问题,但它没有考虑y轴的尺寸变化。我已编辑此代码,但希望有一个更优雅的方法(可能使用“保持”类型代码)。

How to plot graphs above each other in Matlab?

2 个答案:

答案 0 :(得分:1)

示例:

A = 1000;
a = 0.005;
b = 0.005;

t = 0:900;
z1 = A*exp(-a*t);
z2 = sin(b*t);

[ax,p1,p2] = plotyy(t,z1,t,z2,'semilogy','plot');

ylabel(ax(1),'Semilog Plot') % label left y-axis
ylabel(ax(2),'Linear Plot') % label right y-axis
xlabel(ax(2),'Time') % label x-axis

参考:http://www.mathworks.com/help/matlab/creating_plots/plotting-with-two-y-axes.html

答案 1 :(得分:1)

这里有一些代码可以做你想要的......如果我理解得对。基本上你在同一个图中创建了两个不同的轴,一个在另一个上面,你可以使用XTick和YTick。你可以从这开始我猜。:

clear
close all
clc

x = 1:10;

y1 = -(x.^2);
y2 = sin(x);

figure('Units','Normalized');

hAxes1 = axes('Position',[0.1 0.1 .8 .4]);

yLim = get(hAxes1,'YLim');
Axes1Position = get(hAxes1,'Position');

NewAxesPosition = [Axes1Position(1) Axes1Position(2)+0.4 Axes1Position(3) Axes1Position(4)];

hAxes2 = axes('Position',NewAxesPosition);

plot(x,y1,'b','Parent',hAxes1);

TICK = get(hAxes1,'YTick')

set(hAxes1,'XTick',2:1:10,'YTick',TICK(1:end-1))

hold on

plot(x,y2,'r','parent',hAxes2)
set(gca,'XTick',[],'XTickLabel',[])

hold off

给予:

enter image description here

这不是最佳选择,但由于时间不够,我必须在此停止:)当然,您可以根据需要更改轴的显示或刻度线。此外,您可以使用文本注释来更好地自定义YTicks。希望有所帮助!