子图中的 MATLAB 最后一个图覆盖了其他图
MATLAB last plot in subplot overlays other plots
首先,提前致歉,因为我是 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')
子图现在可以正确显示,我可以使用各自的句柄编辑各个子图。再次感谢您的帮助!
您似乎对 subplot
的作用感到困惑,而且您的术语有点不对。你没有 "setup a figure in a subplot
"。图是包含所有绘图的整个 window,subplot
是包含各种绘图对象(线条、图像、曲面等)的 axes
。
但主要问题是 subplot
创建了一个 axes
。这意味着您不需要在调用 subplot
之后调用 axes()
否则调用 axes
将创建一个不遵循 [=] 布局的新 axes
12=] 输入。
所以不用
subplot(9,4,36)
a = axes('Position', [.1 .2 .8 .7]);
plot(x, y)
随心所欲
subplot(9,4,36)
plot(x,y)
首先,提前致歉,因为我是 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')
子图现在可以正确显示,我可以使用各自的句柄编辑各个子图。再次感谢您的帮助!
您似乎对 subplot
的作用感到困惑,而且您的术语有点不对。你没有 "setup a figure in a subplot
"。图是包含所有绘图的整个 window,subplot
是包含各种绘图对象(线条、图像、曲面等)的 axes
。
但主要问题是 subplot
创建了一个 axes
。这意味着您不需要在调用 subplot
之后调用 axes()
否则调用 axes
将创建一个不遵循 [=] 布局的新 axes
12=] 输入。
所以不用
subplot(9,4,36)
a = axes('Position', [.1 .2 .8 .7]);
plot(x, y)
随心所欲
subplot(9,4,36)
plot(x,y)