我想绘制具有相同x轴但具有不同y轴的两个图,一个堆叠在另一个之上。下面有一个类似的问题,但它没有考虑y轴的尺寸变化。我已编辑此代码,但希望有一个更优雅的方法(可能使用“保持”类型代码)。
答案 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
给予:
这不是最佳选择,但由于时间不够,我必须在此停止:)当然,您可以根据需要更改轴的显示或刻度线。此外,您可以使用文本注释来更好地自定义YTicks。希望有所帮助!