Matlab:用于发布的比例数字 - 精确尺寸和字体大小
Posted
技术标签:
【中文标题】Matlab:用于发布的比例数字 - 精确尺寸和字体大小【英文标题】:Matlab: Scale figures for publishing - exact dimensions and font sizes 【发布时间】:2014-07-02 12:43:36 【问题描述】:我目前正在撰写一篇科学论文,对于创建具有我希望它们具有的确切尺寸的图形非常绝望。特别是字体大小不匹配。 我已经用谷歌搜索了很多,并且有很多关于这个主题的指南和脚本,但没有任何帮助 - 我还没有弄清楚(抱歉)为什么我的方法不起作用:
FS=8; %font size in points (the same as in my document)
width=12; %width of figure in cm
height=4; %height of figure in cm
scatter(1:20,rand(20,1));
xlabel('X','fontsize',FS),ylabel('Y','fontsize',FS),title('X vs. Y','fontsize',FS)
%now I scale the figure and place it in the bottom left corner. The white margins around it are cropped automatically
set(gca,'units','centimeters','outerposition',[0 0 width height])
%export as .eps
print(gcf,'-depsc','test')
当我将 test.eps 加载到 Inkscape 中时,该图为 10.16 x 3.529 厘米,字体大小(标题和轴标签)为 10。 如何获得具有精确缩放比例的图形,尤其是字体大小?
【问题讨论】:
旁注:如果您使用的是 Latex,可以查看psfrag 包。这允许您替换 eps 图中的字符串。因此,替换将具有与文本相同的字体和大小。 您可以尝试PaperPosition
图形属性。从描述来看,它似乎在做你想做的事。
@Schorsch PaperPosition
是诀窍,我曾经也为此苦苦挣扎,并且在网上搜索了几个小时。您应该将此作为答案发布。
@Schorsch @patrik 我已经尝试过 PaperPosition,但这也不能解决问题:set(gcf,'paperunits','centimeters','papersize',[width height],'paperposition',[0 0 widht height]);
导出时,图形仍然不是宽度 x 高度缩放
【参考方案1】:
我做了以下事情:
FS=8; %font size in points (the same as in my document)
width=12; %width of figure in cm
height=4; %height of figure in cm
scatter(1:20,rand(20,1));
set(gca, 'fontsize', FS);
xlabel('X','fontsize',FS),ylabel('Y','fontsize',FS),title('X vs. Y','fontsize',FS)
set(gcf,'units','centimeters','position',[0 0 width height])
export_fig(gcf, 'test.pdf', '-transparent', '-nocrop')
输出图形为 12cm x 4cm。然而,Inkscape 中的字体大小仍然声称为 10,但看起来与图中的大小相同。 Export_fig可以从MATLAB file exchange下载。
【讨论】:
这对我不起作用 - 我导出的图是 10.36 厘米 x 3.89 厘米大。我不明白为什么这不起作用...【参考方案2】:这是我现在解决它的方法 - 它并不完全优雅,但它有效...... 我绘制我的图形并在图形窗口中按照我希望的方式对其进行排列和缩放:
set(gcf,'units','centimeters','position',[0 0 width height])
由于轴周围的白色边距,我将宽度/高度增加了边距用完的近似值(试错...)。然后我将其导出:
export_fig(gcf,'test','-eps','-transparent')
并将其加载到 Inkscape 中。现在我设置文档属性,以便文档具有我希望我的图形具有的确切大小 - 由于我之前增加了宽度/高度,所以图形部分超出了这个框架。 然后我安排轴在它们之间留出我想要的尽可能多的空白;希望在那之后,一切都在文档边界内。 现在可能绘图小于文档边框 - 为了确保它不会被扩展,弄乱缩放,当我将它放入我的实际文档(我的论文,而不是 Inkscape 文档......)时,我只是创建了一个与文档边框匹配的白色背景。完成了。 除了 Matlab 中的 fontsize 和 fontname 属性 - 我还没有弄清楚为什么它们没有正确导出......但这并不难在 Inkscape 中手动修复。
谢谢大家的帮助。
【讨论】:
以上是关于Matlab:用于发布的比例数字 - 精确尺寸和字体大小的主要内容,如果未能解决你的问题,请参考以下文章