在 Matlab 中,我有两个要包含在乳胶文档中的图。我可以使用以下代码更改每个绘图的大小以及其他所有内容:
set(1, 'units', 'centimeters', 'position', [0 0 10 8]);
set(get(gca,'xlabel'),'string','cutoff','fontsize',14,'fontname','Bitstream Vera Serif');
set(get(gca,'ylabel'),'string','F-score','fontsize',14,'fontname','Bitstream Vera Serif');
set(gca,'fontsize',14,'fontname','Bitstream Vera Serif');
print(1,'-depsc','-r300',[dir_name filenames{f} method{m} '_comb']);
这会将我的绘图保存到正确大小的 .eps 文件中,并在乳胶中以正确的大小完美加载。但是,我希望在保持轴大小的同时将两个图都放在子图中。上面的代码不起作用,因为打印的子图似乎忽略了轴的大小,并且在乳胶中总是以相同的大小显示(不管我为轴制作的数字有多大,都没有关系)。
如何确保 Matlab 以正确的尺寸打印子图?也许值得注意:子图的大小在生成图时确实在屏幕上发生了变化,但这被乳胶忽略了,即使它在不使用子图时工作正常。
- 编辑 -
经过一番摆弄,我能够为我拥有的代码提供一个最小的工作示例。
X1 = sort(rand(30,1));
Y1 = sort(rand(30,1));
X2 = sort(rand(30,1));
Y2 = sort(rand(30,1));
subplot(2,1,1)
plot(X1,Y1,'gs','LineWidth',0.5,'MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',2)
axis([0 1 0 1]);
highX = X1(:,1)>=0.8;
for K = 1 : size(X1,1)
if highX(K) == 1
line(X1(K,1),Y1(K,1),'color',[.5 .5 .5],'marker','o','linestyle','none','markersize',9,'MarkerEdgeColor','k');
end
end
set(1, 'units', 'centimeters', 'position', [2 2 15 15]);
subplot(2,1,2)
plot(X2,Y2,'gs','LineWidth',0.5,'MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',2)
axis([0 1 0 1]);
highX = X2(:,1)>=0.8;
for K = 1 : size(X2,1)
if highX(K) == 1
line(X2(K,1),Y2(K,1),'color',[.3 .5 .7],'marker','o','linestyle','none','markersize',9,'MarkerEdgeColor','k');
end
end
set(1, 'units', 'centimeters', 'position', [2 2 15 15]);
print(1,'-depsc','-r300','test');
这会产生 2 个标有一些坐标的图。在乳胶中,我像这样加载文件:
\documentclass{article}
\usepackage{graphicx,epstopdf}
\begin{document}
\begin{figure}[H]
\centering
\includegraphics[width=1\linewidth]{test.eps}
\caption{Caption}
\label{fig:label}
\end{figure}
\end{document}