gpt4 book ai didi

python - 全局更改 matplotlib 默认样式

转载 作者:太空宇宙 更新时间:2023-11-03 13:56:30 24 4
gpt4 key购买 nike

我有一个问题:如何在 matplotlib 上使用默认样式(因为我喜欢它)但仅更改单个参数?这是一个例子:使用默认的 matplotlib 样式或“calssic”样式,我可以通过更新 rcParams 来全局更改字体大小:

import matplotlib.pyplot as plt
plt.style.use('classic')
plt.rcParams.update({'font.size': 18.0})

x = [0, 1, 2, 3]
y = [0, 1, 4, 9]

fig, ax0 = plt.subplots()
ax0.plot(x, y)
ax0.set_xlabel('data x')
ax0.set_ylabel('data y')
plt.show()

output

如果我在开始时选择不同的默认样式:

import matplotlib.pyplot as plt
plt.style.use('seaborn')
plt.rcParams.update({'font.size': 18.0})

x = [0, 1, 2, 3]
y = [0, 1, 4, 9]

fig, ax0 = plt.subplots()
ax0.plot(x, y)
ax0.set_xlabel('data x')
ax0.set_ylabel('data y')
plt.show()

the font size remains of the default value它不是那样工作的;

plt.rcParams.update({'font.size': 18.0})

就像font.size行不存在一样。现在,一个简单的解决方案是定义一个具有特定字体大小的全局变量,然后手动将其添加到绘图的每个元素,但对我来说听起来不太聪明。还有其他想法如何全局修改字体大小吗?它实际上是可能的还是我只需要处理它并自己创建一个 matplotlib 样式文件?

编辑:经过更仔细的思考,根据 DavidG 的评论,我尝试了不同的样式:ggplot 和 Fivethirtyeight 甚至 seaborn-dark,并且我的代码有效(正如我所期望的)。那么这个问题只与seaborn风格有关(我很不幸选择了)..

最佳答案

刻度标签的大小由 xtick.labelsize 确定和ytick.labelsize rcParams。
如果将它们打印出来,您会发现它们被设置为 10 (pt) 为seaborn风格。因此,如果将它们更改为 18相反,您将到达所需的情节。

import matplotlib.pyplot as plt
plt.style.use('seaborn')
plt.rcParams.update({'font.size': 18,
'xtick.labelsize' : 18,
'ytick.labelsize' : 18})

# ....

enter image description here

如您所见,轴标签仍然很小。那是因为我们还没有设置axes.labelsize范围。

那么为什么 seaborn-dark 会这样呢?只需设置 'font.size' 即可按预期工作仅?
答案是有两种方法来指定字体大小。一种是像上面那样以点为单位的绝对数字,另一种是使用相对值。这些是xx-small, x-small, small, medium, large, x-large, xx-large, larger, or smaller 。这些值与 font.size 中指定的大小相关。 。

如果是seaborn-dark风格和(希望还有许多其他),labelsize使用这些相对值之一进行设置。在这种情况下,它是 medium这意味着 font.size正在使用中。

您可以检查 matplotlib\lib\matplotlib\mpl-data\stylelib 中的样式文件夹中直接查看它们如何指定各自的参数并找出它们之间的差异。

关于python - 全局更改 matplotlib 默认样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49564042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com