首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB中较大的子图

MATLAB中较大的子图
EN

Stack Overflow用户
提问于 2014-03-02 20:29:44
回答 1查看 1.7K关注 0票数 1

我有6个Y变量,都有相同的X变量(时间)

我想在一列中有6个图,但是当我使用subplot(6,1,1)时,这些图在垂直方向上变得很小。

我尝试过使用:

代码语言:javascript
复制
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标签(数字),但保持在所有的子图上,但最底部的一个,这也将是一个很大的帮助。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-03-02 20:43:40

Matlab很难轻松地制作出这样的图形。您要么手动完成,要么在file-exchange上四处搜索,看看是否有人已经实现了更好的功能。

这篇blog讨论了一个似乎可以做你想做的事情的脚本。

要隐藏标记标签,请执行以下操作:

代码语言:javascript
复制
set(gca, 'XTickLabel', '')

如果你想构建你自己的子图,你可以使用这样的东西(没有经过很好的测试):

代码语言:javascript
复制
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)的结果:

你可以把你自己和空间玩起来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22127536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档