Python 子批次中的自定义xtick标签

Python 子批次中的自定义xtick标签,python,matplotlib,subplot,Python,Matplotlib,Subplot,我正在尝试自定义子批次中的xtick标签。我希望xtick标签仅位于上一个绘图的底部x轴(第四个,第一个是最顶部)。我的尝试: 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.botto

我正在尝试自定义子批次中的xtick标签。我希望xtick标签仅位于上一个绘图的底部x轴(第四个,第一个是最顶部)。我的尝试:

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是任意阵列。如有任何帮助,我们将不胜感激。

您正在寻找的是。如果设置为
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() 
请发一封信。