首先,请提前道歉,因为我是MATLAB(和编码)的新手。
我试图在子图(4,9,n)中放置多个图,但是最后一个图覆盖了其余的图,并且是唯一一个包含数据的图。
我希望每个情节都像这样: Line plot with two x axes
这里是我正在使用的代码片段(因为我是新手,我还没有使用过循环,因此我已经为每个单独的数字提供了代码! ):
%% TMR2
%set up data
TMR2 = HEOBI1{HEOBI1.STNNBR==2,:}
x1 = TMR2(:,[4])
x2 = TMR2(:,[5])
x3 = TMR2(:,[7])/25
y = TMR2(:,[3])
%set up figure in subplot
subplot(4,9,1)
%set up secondary (H2O2) axis
b=axes('Position',[.1 .1 .8 1e-12]);
set(b,'Units','normalized');
set(b,'Color','none');
b.XColor=[0 153/255 0];
%primary plot (DFE and FEII)
a=axes('Position',[.1 .2 .8 .7]);
set(a,'Units','normalized');
plot(x1,y,'-o','Color',[221/255 15/255 4/255],...
'MarkerFaceColor',[221/255 15/255 4/255])
set(gca,'Ydir','reverse')
xlim([0 3])
hold on
plot(x2,y,'-o','Color',[0 153/255 153/255],...
'MarkerFaceColor',[0 153/255 153/255])
plot(x3,y,'-o','Color',[0 153/255 0],...
'MarkerFaceColor',[0 153/255 0])
hold off
title('2')
%Set secondary (H2O2) axis limit
set(b,'xlim',[0 25]*3);
完成:
%% TMR40
%set up data
TMR40 = HEOBI1{HEOBI1.STNNBR==40,:}
x1 = TMR40(:,[4])
x2 = TMR40(:,[5])
x3 = TMR40(:,[7])/25
y = TMR40(:,[3])
%set up figure in subplot
subplot(4,9,36)
%set up secondary (H2O2) axis
b=axes('Position',[.1 .1 .8 1e-12]);
set(b,'Units','normalized');
set(b,'Color','none');
b.XColor=[0 153/255 0];
%primary plot (DFE and FEII)
a=axes('Position',[.1 .2 .8 .7]);
set(a,'Units','normalized');
plot(x1,y,'-o','Color',[221/255 15/255 4/255],...
'MarkerFaceColor',[221/255 15/255 4/255])
set(gca,'Ydir','reverse')
xlim([0 3])
hold on
plot(x2,y,'-o','Color',[0 153/255 153/255],...
'MarkerFaceColor',[0 153/255 153/255])
plot(x3,y,'-o','Color',[0 153/255 0],...
'MarkerFaceColor',[0 153/255 0])
hold off
title('40')
%Set secondary (H2O2) axis limit
set(b,'xlim',[0 25]*3);
以下是我的最终输出结果: Incorrect Subplot
@Suever我更多地考虑了你的建议,并为每个子图取出了axes
的所有代码。然后我用句柄设置subplot
并给每个子图一个句柄。我的代码现在开始如下:
%% Subplot setup
figure;
for k = 1:36
h(k) = subplot(4,9,k);
end
现在每个子图的代码如下所示:
%% TMR40
%set up data
TMR40 = HEOBI1{HEOBI1.STNNBR==40,:}
x1 = TMR40(:,[4])
x2 = TMR40(:,[5])
x3 = TMR40(:,[7])/25
y = TMR40(:,[3])
%set up plot
subplot(h(36))
%primary plot (DFE and FEII)
plot(x1,y,'-o','Color',[221/255 15/255 4/255],...
'MarkerFaceColor',[221/255 15/255 4/255])
set(gca,'Ydir','reverse')
xlim([0 3])
hold on
plot(x2,y,'-o','Color',[0 153/255 153/255],...
'MarkerFaceColor',[0 153/255 153/255])
plot(x3,y,'-o','Color',[0 153/255 0],...
'MarkerFaceColor',[0 153/255 0])
hold off
title('40')
子图现在正确显示,我可以使用各自的句柄编辑各个子图。再次感谢您的帮助!
答案 0 :(得分:1)
看起来你对subplot
做了什么感到困惑,你的术语有点偏。您没有“在subplot
中设置数字”。图是包含所有绘图的整个窗口,subplot
是axes
,用于保存各种绘图对象(线条,图像,曲面等)。
但主要问题是subplot
会创建axes
。这意味着您在调用axes()
后无需致电subplot
,否则对axes
的调用将创建一个不遵守{{1}布局的新axes
1}}输入。
所以而不是
subplot
只做
subplot(9,4,36)
a = axes('Position', [.1 .2 .8 .7]);
plot(x, y)