Python 全局更改matplotlib默认样式

Python 全局更改matplotlib默认样式,python,matplotlib,Python,Matplotlib,我有一个问题:如何在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

我有一个问题:如何在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()

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

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()
它不是那样工作的

plt.rcParams.update({'font.size': 18.0})
这就像
font.size
行不存在一样。 现在,一个简单的解决方案是定义一个具有特定字体大小的全局变量,并手动将其添加到绘图的每个元素中,但我觉得这听起来并不聪明。还有其他关于如何全局修改字体大小的想法吗?事实上,这是可能的,还是我必须自己处理并创建matplotlib样式的文件

编辑:
经过更仔细的思考,在DavidG的评论之后,我尝试了不同的风格:ggplot和fivethirtyeight甚至seaborn dark,我的代码工作正常(正如我所期望的)。这一问题只与seaborn风格有关(我选择这一风格是很不幸的)

标签的大小由
xtick.labelsize
ytick.labelsize
rcParams确定。
如果将它们打印出来,您会看到它们被设置为
seaborn
样式的
10
(pt)。因此,如果将它们改为
18
,您将得到所需的绘图

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

# ....

如您所见,轴标签仍然很小。这是因为我们没有设置
axes.labelsize
参数

那么为什么
seaborn dark
只需设置
“font.size”
即可正常工作呢?
答案是指定字体大小有两种方法。一个是上面提到的绝对数,另一个是相对值。它们是
xx小、x小、小、中、大、x大、xx大、大或小
。这些值与
font.size
中指定的大小相关

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


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

您是否也安装了seaborn模块?事实上没有,我只是没有想到这会有什么关系,因为我只是假设所有的信息都在matplotlib样式的库中。我知道如何使用seaborn,但我似乎无法仅使用matplotlib使其工作。我将发布一个使用seaborn的答案,尽管它与您的要求不完全一样,因为它可能会帮助其他安装了模块的人您不需要安装seaborn就可以使用
seaborn
样式;同样,使用
ggplot
样式也不必安装ggplot。这些样式完全写在它们引用的单个.mplstyle文件中。