Python 尝试更改轴刻度的字体大小时,matplotlib子绘图为空

Python 尝试更改轴刻度的字体大小时,matplotlib子绘图为空,python,matplotlib,Python,Matplotlib,我有一个脚本,用于绘制一个单独的情节,并将其改编为两个子情节。当试图通过tick_params更改轴刻度的字体大小时,我得到的只是一个空绘图。我已将此问题与此函数的调用隔离开来。以下MWE运行良好,注释掉了勾选参数调用,但如果使用这些调用,则会生成错误的数字。如何修改此代码以使用子地块 x = np.linspace(0.0, 1.0, 100) y = x fig = plt.figure() plt.subplot(1,2,1) plt.plot(x, y) plt.xlabel('x',

我有一个脚本,用于绘制一个单独的情节,并将其改编为两个子情节。当试图通过
tick_params
更改轴刻度的字体大小时,我得到的只是一个空绘图。我已将此问题与此函数的调用隔离开来。以下MWE运行良好,注释掉了
勾选参数
调用,但如果使用这些调用,则会生成错误的数字。如何修改此代码以使用子地块

x = np.linspace(0.0, 1.0, 100)
y = x

fig = plt.figure()
plt.subplot(1,2,1)
plt.plot(x, y)
plt.xlabel('x', fontsize=16)
plt.ylabel('y', fontsize=16)
mystr = 'Some plot 1'
plt.title(mystr, fontsize=16)
# plt.axes().tick_params(axis='both', which='major', labelsize=16)
# plt.axes().tick_params(axis='both', which='minor', labelsize=16)
plt.grid()


plt.subplot(1,2,2)
plt.plot(x, y)
plt.xlabel('x', fontsize=16)
plt.ylabel('y', fontsize=16)
mystr = 'Some plot 2'
plt.title(mystr, fontsize=16)
# plt.axes().tick_params(axis='both', which='major', labelsize=16)
# plt.axes().tick_params(axis='both', which='minor', labelsize=16)
plt.grid()
plt.show()

不要通过
plt.subplot()
访问子地块,而是单独访问

我想试试这样的东西:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.0, 1.0, 100)
y = x

fig, ax = plt.subplots(1, 2)

ax[0].plot(x, y)
ax[0].set_title('Some plot 1', fontsize=16)
ax[0].set_xlabel('x', fontsize=16)
ax[0].set_ylabel('y', fontsize=16)
ax[0].tick_params(axis="x", labelsize=16)
ax[0].tick_params(axis="y", labelsize=16)
ax[0].grid()

ax[1].plot(x, y)
ax[1].set_title('Some plot 2', fontsize=16)
ax[1].set_xlabel('x', fontsize=16)
ax[1].set_ylabel('y', fontsize=16)
ax[1].tick_params(axis="x", labelsize=16)
ax[1].tick_params(axis="y", labelsize=16)
ax[1].grid()

实际上,在官方的
matplotlib
GitHub存储库中也提出了一个非常类似的问题。因此,如果您想更详细地了解为什么
子地块
以这种方式工作,您可能需要阅读本文


另外,我想补充一点:在你的例子中,这些数字略有重叠。这可以通过在定义子批次后调用
fig.tight_layout()
来解决。

plt.gca()。勾选参数()
可以在这里工作。最好使用
ax=plt.subplot(…)
,然后使用
ax.plot(…)
ax.setxlabel(…)
ax.tick_参数(…)
。。。