有什么办法统一 macOS 和 Linux 下 Python 的 matplotlib 的字体配置

2018-09-11 06:18:08 +08:00
 lyricorpse

我经常在两个平台切换,发现用 python 的 matplotlib 画图时,同样的代码生产的图片中字体不同大小也不同导致排版失真。用

import matplotlib
matplotlib.rcParams

查看关于 font 的配置在两个平台下是一致的,区别大概是有些字体在某个平台下没装吧。

请问有什么办法可以快速方便的统一两平台下的字体设置?比如有没有办法查询 macOS 下默认用了哪些字体?是不是安装上那些字体后 Linux 下就会默认用同样的字体了?谢谢!

2445 次点击
所在节点    Python
7 条回复
thedrwu
2018-09-11 06:44:55 +08:00
1、不同系统用统一的字体(自己在每个系统上安装好)。免费的字体既全面(数学、希腊、Cyrillic )且好看的不多,为了排好看的字体,几百美元免不了。
2、手动配置 rcparams,包括数学字体( mathtext ),设置好字号。
3、 手动设置好 figure 的尺寸和 dpi。
( 4、我一般做成 svg,从 inkscape 里重新修改边界,做最后的调整,导出成别的格式。)

图片完全可移植。插到文档里 kerning、ligature、大小、 行间距之类的都与文档很和谐。
ipwx
2018-09-11 09:39:24 +08:00
考虑一下全面使用 LaTeX 渲染所有文本 。

https://matplotlib.org/users/usetex.html

然后你的问题就变成了,两个操作系统各装一遍 LaTeX。
ipwx
2018-09-11 09:40:24 +08:00
@thedrwu 装了 LaTeX 可以用 pdfcrop 裁 pdf 白边。当然 png 可以用 imagemagick 裁白边。
lyricorpse
2018-09-11 10:02:01 +08:00
@thedrwu 谢谢!我对 macOS 下默认的效果还是满意的,并不想在 Linux 下手动去全部配置一遍,但现在就是不清楚 macOS 下默认用了什么字体,有办法查询么? rcParams 里面都是给一个列表,如果我的理解没错的话,排在前面的字体优先选择,没装的话就用下一个。

@ipwx 谢谢!是个好办法
ipwx
2018-09-11 11:25:14 +08:00
@lyricorpse 要注意像 sans, serif, monospace 这种字体是操作系统 dependent 的。
icymorn
2018-09-11 22:51:12 +08:00
lyricorpse
2018-09-12 11:56:36 +08:00
@ipwx Good point!
@icymorn 谢谢!原来是那样查询字体的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488037

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX