我有6个Y变量都具有相同的X变量(时间)
我想在一列中有6个图,但是当我使用subplot(6,1,1)
时,图表会垂直变小。
我尝试过使用:
x=0:360;
y1=sind(x);
y2=cosd(x);
h=subplot(6,1,1);
plot(x,y1);
d = get(h,'Position');
d(4)=d(4)*3;
set(h,'Position',d);
h=subplot(6,1,2);
plot(x,y2);
d = get(h,'Position');
d(4)=d(4)*3;
set(h,'Position',d);
....(For 6 subplots)
希望每个子图在垂直方向上大3倍,这样可行,但子图之间的间距不会更新,因此子图开始重叠:
我怎样才能使子图在垂直方向上变大,但是在改变每个子图的高度之前,它们的间距是相同的?
另外,如果你可以帮我隐藏xTick标签(数字),但在所有子图上保留刻度线(线),但最底层的那些也是一个很好的帮助。谢谢!
答案 0 :(得分:1)
Matlab非常难以制作这种图表。你要么必须手工完成,要么在file-exchange上搜索一下,看看是否有人已经实现了更好的目标。
这个blog讨论了一个似乎可以做你想做的脚本。
隐藏刻度标签:
set(gca, 'XTickLabel', '')
如果你想建立自己的子图,你可以使用这样的东西(没有经过很好的测试):
function ax = mySubplot(nrow, ncol)
% returns a matrix of axis handles
% to plot in the second subplot, you would use plot(ax(1,2), x, y)
% standard x, y, dx, dy for subplot(111)
x0 = 0.1300;
y0 = 0.1100;
w0 = 0.7750;
h0 = 0.8150;
w = w0 / ncol;
h = h0 / nrow;
figure()
ax = nan(nrow, ncol);
for irow = 1:nrow
for icol = 1:ncol
ax(irow, icol) = axes('position', ...
[x0 + (icol - 1) * w, y0 + (nrow - irow) * h, 0.9*w, 0.9*h]);
end
end
mySubplot的结果(6,2):
你可以自己玩间距。