5

次のグラフについて質問があります。

ここに画像の説明を入力 基本的に、ここには同じ x 軸を持つ 2 つのサブプロットがあります。スペースを節約したいのですが、2 つの x-axix ラベルを持つ 2 つのサブプロットを使用する代わりに、それらの間のスペースを削除して、それらを互いに積み重ねたいと思います。

それを行う簡単な方法はありますか?

どうもありがとう!パトリック

%% Data
t  = 0:100;
f1 = 0.3;
f2 = 0.07;
u1 = sin(f1*t);   cu1 = 'r'; %red
u2 = cos(f2*t);   cu2 = 'b'; %blue
v1 = 5*u1.^2;     cv1 = 'm'; %magenta
v2 = 5*u2.^2;     cv2 = 'c'; %cyan

figure;
h(1) = subplot(2,1,1); % upper plot
plot(t,u1,'Color',cu1,'DisplayName','u1'); hold on;
plot(t,u2,'Color',cu2,'DisplayName','u2'); hold off;

xlabel('Time t [s]');
ylabel('u [some unit]');
legend(gca,'show');

h(2) = subplot(2,1,2); % lower plot
plot(t,v1,'Color',cv1,'DisplayName','v1'); hold on;
plot(t,v2,'Color',cv2,'DisplayName','v2'); hold off;

xlabel('Time t [s]');
ylabel('v [some unit^2]');
legend('show');

linkaxes(h,'x'); % link the axes in x direction (just for convenience)
4

1 に答える 1

11

上のプロットの xticks を削除します。

set(h(1),'xticklabel',[]);

また、xlabelを削除します(コード内のその行を削除またはコメントしてください)

次に、位置を変更して 2 つを近づけます。

pos=get(h,'position');
bottom=pos{2}(2);
top=pos{1}(2)+pos{1}(4);
plotspace=top-bottom;
pos{2}(4)=plotspace/2;
pos{1}(4)=plotspace/2;
pos{1}(2)=bottom+plotspace/2;

set(h(1),'position',pos{1});
set(h(2),'position',pos{2});

それからあなたは得るでしょう

ここに画像の説明を入力

y 軸のラベルが重なり始めているので、これらを調整することもできます。

set(h(1),'ytick',[-0.5 0 0.5]);

たとえば、次のように 1 つの y 軸を右側に配置します。

set(h(2),'YAxisLocation','right')
于 2012-08-01T11:52:51.113 に答える