在使用python matplotlib时,如何更改图中的所有文本大小?

在使用python matplotlib时,如何更改图中的所有文本大小?,python,text,resize,matplotlib,figure,Python,Text,Resize,Matplotlib,Figure,很久以前我看到一个函数,它将matplotlib中的所有文本大小更改为相同。现在我到处都找不到。这是一个简单的一(或两)个班轮,如: for item in pylab.gca(): item.getLabel().setSize(10) 我应该如何做上述工作?以上只是伪代码,但其目的是更改x和y标签、图例、标题以及所有内容 编辑:…在一个图形(对象)内。我希望文本大小取决于图形宽度。“全局字体大小”会更改所有数字的字体大小吗?我认为它不能动态应用(在创建图形之前设置是只读的) 编辑2:我测试

很久以前我看到一个函数,它将matplotlib中的所有文本大小更改为相同。现在我到处都找不到。这是一个简单的一(或两)个班轮,如:

for item in pylab.gca(): item.getLabel().setSize(10)
我应该如何做上述工作?以上只是伪代码,但其目的是更改x和y标签、图例、标题以及所有内容

编辑:…在一个图形(对象)内。我希望文本大小取决于图形宽度。“全局字体大小”会更改所有数字的字体大小吗?我认为它不能动态应用(在创建图形之前设置是只读的)


编辑2:我测试了
font.size=22
方法。如果您在legend()之后运行它,它会有一些奇怪的行为。文本垂直空格不会更新。因此,它应该类似于getText().setTextSize()。

而不是更改字体大小,您可以更改figsize(字体大小保持不变):

编辑(完整性):像素的大小(屏幕上)由可设置的dpi设置控制,即通过Figure.set_dpi(val)设置

编辑2:我不知道如何(以及是否)控制精确的像素高度。不过我做了一些测试:

#! /usr/bin/env python

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)

matplotlib.rcParams.update({'font.size': 10})
fig,(ax) = plt.subplots(1, 1, figsize=(10,10))
plt.plot(x,y)
plt.savefig('test.png', dpi=300)

# font-size, figsize, dpi => pixel-height
# 10, 20x20, 100 => 10
# 10, 20x20, 200 => 21
# 10, 10x10, 100 => 10
# 10, 10x10, 200 => 21
# 10, 10x10, 300 => 34

还要注意的是,消除混叠可能会对像素高度产生影响。

可能的重复:这完全不同。。。请参阅添加的编辑。如何以与文本相同的单位获取figsize(英寸=>屏幕像素)?我想要比率=figwidth/textheight=30.ah,好的。。。它是在文本中设置的。。。“在屏幕上显示或创建图像(PNG)时,文本的像素大小和线宽等由dpi设置决定,该设置由Figure.set_dpi(val)设置。”。因此,添加pylab.gcf().set_dpi(180)可以调整屏幕上的图形大小。你能把这个添加到你的解决方案中吗?我会接受的。嗯,还有一些问题。。。即使我手动设置dpi,文本也不是以点为单位。。。我的意思是,如果文本大小是10,dpi是10,那么文本在屏幕上就没有一英寸高了。。。如何修复它?
#! /usr/bin/env python

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)

matplotlib.rcParams.update({'font.size': 10})
fig,(ax) = plt.subplots(1, 1, figsize=(10,10))
plt.plot(x,y)
plt.savefig('test.png', dpi=300)

# font-size, figsize, dpi => pixel-height
# 10, 20x20, 100 => 10
# 10, 20x20, 200 => 21
# 10, 10x10, 100 => 10
# 10, 10x10, 200 => 21
# 10, 10x10, 300 => 34