首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何正确设置从matplotlib中导出的PDF的图形大小和字体大小?

如何正确设置从matplotlib中导出的PDF的图形大小和字体大小?
EN

Stack Overflow用户
提问于 2013-05-26 04:39:14
回答 2查看 2.9K关注 0票数 1

我需要生成适合特定宽度和使用特定字体大小的图形,最好不要对pdf文件进行后处理。

在我的系统上,默认的图形用户界面后端是'TkAgg‘,默认的字体大小是12.0,正如文本对象上的get_fontsize()方法所报告的那样。当我使用以下命令生成图形时

代码语言:javascript
运行
复制
f = pyplot.figure(figsize=(2.0,2.0))
f.text(0.5,0.5,'TEXT')
pyplot.show()

并另存为PDF格式,图形尺寸太大。pdfinfo报告

代码语言:javascript
运行
复制
Creator:        matplotlib 1.1.1rc, http://matplotlib.sf.net
Producer:       matplotlib pdf backend
CreationDate:   Sat May 25 10:52:02 2013
Tagged:         no
Pages:          1
Encrypted:      no
Page size:      196.2 x 153 pts
File size:      9357 bytes
Optimized:      no
PDF version:    1.4

196.2 pt == 2.725英寸

但是,如果我将图形调整为2英寸宽,则字体大小与12pt LaTeX字体匹配(视觉上)。

相反,跳过GUI会生成尺寸正确但字体太大的图形:

代码语言:javascript
运行
复制
import matplotlib
matplotlib.use('PDF')
f = pyplot.figure(figsize=(2.0,2.0))
f.text(0.5,0.5,'TEXT')
f.savefig('test.pdf')

Creator:        matplotlib 1.1.1rc, http://matplotlib.sf.net
Producer:       matplotlib pdf backend
CreationDate:   Sat May 25 10:50:42 2013
Tagged:         no
Pages:          1
Encrypted:      no
Page size:      144 x 144 pts
File size:      9254 bytes
Optimized:      no
PDF version:    1.4

144英尺== 2.0英寸

Cairo后端产生相同的结果。添加f.set_size_inches((2,2))也不会改变任何东西。

有没有办法让matplotlib的字体和图形大小恰到好处?

EN

回答 2

Stack Overflow用户

发布于 2013-05-27 05:23:12

检查您的.matplotlibrc并查找sivefig.bbox,确保它已被注释掉,或者设置为非tight的内容。

您可以尝试:

代码语言:javascript
运行
复制
fig.savefig('so.png', bbox_inches=matplotlib.transforms.Bbox(np.array(((0, 0), (2, 2)))))

它明确地设置了边界框。

也就是说,如果您的.matplotlibrc中没有任何内容,则应将其报告为错误。

票数 1
EN

Stack Overflow用户

发布于 2013-05-26 04:43:21

您应该使用fig.set_size_inches,因为您可以精确地给出pdf的物理大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16753689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档