在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}
答案 0 :(得分:2)
我不知道类似于状态的函数,例如plot或subplot
来做你所要求的,但是,如果你觉得直接使用数据对象,那么你可以直接进行更改轴对象。就个人而言,我认为通过一些练习,你可以通过直接操作来获得更好的效果。
Axis对象是图形的一部分,用于处理大多数人通常使用的函数背景中绘制图形的工作,如plot
和scatter
。当我需要做你喜欢的事情时,我会做以下事情。
% Get the image objects
f = figure();
a1 = axes('Parent', f);
a2 = axes('Parent',f);
% Use builtins to make the plots
plot(a1, [1:10]);
plot(a2, [1:10], [1:5,4:-1:1]);
% I think that it is best to add labels and titles here too
% That way you can make sure that everything fits correctly
% Make everything fit
% Position is [left, bottom, width, height]
set( a1, 'units', 'centimeters', 'position', [1, 1,10, 8] );
set( a2, 'units', 'centimeters', 'position', [1,10,10, 8] );
set( f, 'units', 'centimeters', 'position', [0, 0,12,19] );
答案 1 :(得分:1)
如果图中包含子图,则在使用print()
打印到.eps时不会保留图形的大小,除非您指定:
set(gcf, 'PaperPositionMode','auto')