子图中的自定义 xtick 标签

Custom xtick label in subplots

我正在尝试自定义子图中的 xtick 标签。我只想在最后一个图的底部 x 轴上有 xtick 标签(第四个,第一个是最上面的)。我的尝试:

import matplotlib.pyplot as plt
plt.subplots(4, 1)
plt.subplots_adjust(hspace=0)
plt.subplot(411)
plt.xlabel('x (h)')
plt.ylabel(' y1 (nT)')
plt.minorticks_on()
plt.rcParams['xtick.bottom'] = True
plt.rcParams['xtick.labelbottom'] = False
plt.rcParams['xtick.top'] = True
plt.rcParams['xtick.labeltop'] = False
plt.plot(x,y1)
plt.subplot(412)
plt.xlabel('x (h)')
plt.ylabel(' y2 (nT)')
plt.minorticks_on()
plt.rcParams['xtick.bottom'] = True
plt.rcParams['xtick.labelbottom'] = False
plt.rcParams['xtick.top'] = True
plt.rcParams['xtick.labeltop'] = False
plt.plot(x,y2)
plt.subplot(413)
plt.xlabel('x (h)')
plt.ylabel(' y3 (nT)')
plt.minorticks_on()
plt.rcParams['xtick.bottom'] = True
plt.rcParams['xtick.labelbottom'] = False
plt.rcParams['xtick.top'] = True
plt.rcParams['xtick.labeltop'] = False
plt.plot(x,y3)
plt.subplot(414)
plt.xlabel('x (h)')
plt.ylabel(' y4 (nT)')
plt.minorticks_on()
plt.rcParams['xtick.bottom'] = True
plt.rcParams['xtick.labelbottom'] = True # I thought it will enable xtick labels only on the bottom x-axis of the last plot
plt.rcParams['xtick.top'] = True
plt.rcParams['xtick.labeltop'] = False
plt.plot(x,y4)
plt.show()

x、y1、y2、y3 和 y4 是任意数组。任何帮助将不胜感激。

您要查找的是sharex keyword argument。如果设置为 True,图形的每个子图将具有相同的属性。此外,刻度标签只会转到底部的子图。

tight_layout 命令只是在图中很好地排列子图的一种简单方法。

import matplotlib.pyplot as plt
import numpy as np


x = np.random.randint(0, 100, 10)
y = np.random.randint(0, 100, (4, 10))

fig, axs = plt.subplots(4, 1, sharex=True, sharey=True, figsize=(10, 6))

for i, (ax, data) in enumerate(zip(axs, y)):
    ax.plot(x, data)
    ax.set_ylabel('y{}(nT)'.format(i+1))

ax.set_xlabel('x(h)')
fig.tight_layout()