嗨,我在 matlab 中有一个问题,我想创建一个包含 10 个子图的图形。在 2X5 方向。但问题是我想减少它们之间的死角区域。我还需要保留第一行图像的标题、xlabel 和第二行图像的 xlabel(only)。不需要 ylabels。
到目前为止,我已经完成了这段代码(第一行):一旦我确定了第一行,第二行应该是小菜一碟。
close all
figure,set(gca,'Color','none')
subplot(2,5,1);subplot('Position',[0.02 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,1)), [0 0], 'r','LineWidth',2);
hold off;title('1st curve','FontSize',12);xlabel('(a)','FontSize',12)
subplot(2,5,2);subplot('Position',[0.215 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,2)), [0 0], 'r','LineWidth',2);
hold off;title('2nd curve','FontSize',12);xlabel('(b)','FontSize',12)
subplot(2,5,3);subplot('Position',[0.410 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,3)), [0 0], 'r','LineWidth',2);
hold off;title('3rd curve','FontSize',12);xlabel('(c)','FontSize',12)
subplot(2,5,4);subplot('Position',[0.605 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,4)), [0 0], 'r','LineWidth',2);
hold off;title('4th curve','FontSize',12);xlabel('(d)','FontSize',12)
subplot(2,5,5);subplot('Position',[0.8 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,5)), [0 0], 'r','LineWidth',2);
hold off;title('5th curve','FontSize',12);xlabel('(e)','FontSize',12)
这给了我这样的输出:
如您所见,第四张图片不存在。代码有什么问题?我已经多次重新检查了我的代码和计算,但找不到任何错误。
有趣的是,当我运行这段代码时[只有第 4 个子图]
subplot(2,5,4);subplot('Position',[0.605 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,4)), [0 0], 'r','LineWidth',2);
hold off;title('4th curve','FontSize',12);xlabel('(d)','FontSize',12)
我得到这个答案!
请问谁能告诉我我哪里错了?注意我确实需要图像第一行的 xlabel 和标题。
编辑:然后我去做了这件事。现在我得到了五个图像。然而,在所有情况下,图像之间的间距并不均匀,特别是第一张和第二张图像之间的间距与其他图像不同。
我的代码:
close all
figure,set(gca,'Color','none')
subplot(2,5,1);subplot('Position',[0.02 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,1)), [0 0], 'r','LineWidth',2);
hold off;title('1st curve','FontSize',12);xlabel('(a)','FontSize',12)
subplot(2,5,2);subplot('Position',[0.210 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,2)), [0 0], 'r','LineWidth',2);
hold off;title('2nd curve','FontSize',12);xlabel('(b)','FontSize',12)
subplot(2,5,3);subplot('Position',[0.405 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,3)), [0 0], 'r','LineWidth',2);
hold off;title('3rd curve','FontSize',12);xlabel('(c)','FontSize',12)
subplot(2,5,4);subplot('Position',[0.600 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,4)), [0 0], 'r','LineWidth',2);
hold off;title('4th curve','FontSize',12);xlabel('(d)','FontSize',12)
subplot(2,5,5);subplot('Position',[0.795 0.51 0.18 0.45]);get(gca,'position');set(gca, 'XTick', []);set(gca, 'YTick', []);
imshow(I);hold on; axis off;
contour((BW(:,:,5)), [0 0], 'r','LineWidth',2);
hold off;title('5th curve','FontSize',12);xlabel('(e)','FontSize',12)
现在我得到了这个答案:
我该如何纠正?请帮忙!提前致谢!!
编辑:我似乎已经解决了这个问题。请在下面看到我的答案。但是我确实有疑问。我想让代码循环运行,所以实现了这段代码。
I = imread('coins.png');
I = imresize(I,[128 128]);
for no = 1:5
subplot('Position',[0.025+0.19*(no-1) 0.51 0.19 0.48]);
imshow(I);
get(gca,'Position');set(gca, 'XTick', []);set(gca, 'YTick', []);
title({'Image' num2str(no)});
subplot('Position',[0.025+0.19*(no-1) 0.03 0.19 0.48]);
imshow(I);
get(gca,'Position');set(gca, 'XTick', []);set(gca, 'YTick', []);
title({'Image' num2str(no)});
end
答案是这样的
这段代码可以向量化吗?