matplotlib - 改变 figsize 大小但保持 fontsize 不变

4
我可以翻译以下内容:

我希望能够展示多个大小不同的图形,确保在打印时文字大小始终相同。我该如何实现?

比如说,我有两张图片:

import matplotlib.pylab as plt
import matplotlib as mpl

mpl.rc('font', size=10)

fig1 = plt.figure(figsize = (3,1))
plt.title('This is fig1')
plt.plot(range(0,10),range(0,10))
plt.show()


mpl.rc('font', size=?)

fig2 = plt.figure(figsize = (20,10))
plt.title('This is fig2')
plt.plot(range(0,10),range(0,10))
plt.show()

我如何设置字体大小,使得打印时fig1中的标题和轴刻度标签与fig2中的大小相同?


我不确定你所说的“when printed”是什么意思。你是指“打印在纸上”,“显示在屏幕上”还是“保存到文件中”?如果使用相同的字体大小,则字体大小将保持不变。更改图形大小会改变字体的相对大小---与图形大小相比,但不会改变字体大小本身。 - farenorth
这也许会引起兴趣:https://dev59.com/BGYr5IYBdhLWcg3wYpUg#64632093 - Ciro Santilli OurBigBook.com
1个回答

2
在这种情况下,字体大小将相同(即也为10点)。
然而,在Jupyter Notebook中,如果图像太宽,则可能以不同的尺寸显示,如下所示:

Jupyter Notebook example

请注意,点数字体大小具有线性比例尺,因此如果您希望字母的大小正好是两倍,您需要输入两倍大小的点数(例如20pt)。这样,如果您期望将第二个图形打印为原始大小的50%(长度和宽度,而不是面积),则字体的大小将相同。
但是,如果此脚本的唯一目的是制作图形,然后进行打印,最好将大小设置为所需大小(在纸张或屏幕上),然后使字体大小相等。然后,您可以将它们粘贴到一个文件中,在该文件中完全按照大小或比例,字体确实是相同的大小。
正如tcaswell所指出的那样,bbox_inches='tight' 实际上会改变保存的图形尺寸,因此尺寸与您设置的 figsize 不同。由于这可能会从某些图形中裁剪更多的空白,因此在给定的宽高比下,对象和字体的相对大小可能会有所不同。

2
请注意 bbox_inches='tight',它会重新调整/裁剪您的图形,如果您在例如 LaTeX 中固定了图形的大小,则会有效地调整字体大小。 - tacaswell
啊,是的,说得对!把这个也加到答案里。不知道还有没有其他要注意的地方呢? - BrechtDeMan
谢谢!我只是有点困惑,因为当在Jupyter笔记本上显示数字时,字体大小会在两种情况下发生变化。然而,在保存图像后,字体大小是相同的。 - Laura
我认为这是因为它不适合屏幕大小。我可以重现你所说的内容(你是否在顶部添加了%matplotlib inline?),但如果我将尺寸改小到足以适应浏览器,则字体大小看起来一样。 - BrechtDeMan
是的,在顶部添加%matplotlib inline。我明白你的意思!谢谢 - Laura
1
我发现在Jupyter Notebook的内联模式下,通过双击图像,可以显示完整大小的图像。 - Laura

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接