Вы можете сначала создать график так, как вы это делаете в данный момент, а затем установить галочки для любого подзаголовка или строки / столбца подзаголовка, создавая двойную ось .
Этот примерустанавливает x-ticklabels дополнительно только для первой строки, как вы хотите.Вы добавляете эти строки до plt.show()
.i<3
здесь означает только первую строку, потому что именно так по порядку можно получить доступ к субплощадкам.both
означает как основные, так и второстепенные тики.Поскольку вы еще не показали второстепенные тики, в настоящий момент вы получаете только основные тики.Вы можете настроить операторы if
, чтобы добавить x-ticklabels в другую строку, если хотите.Мне пришлось удалить команду if i < ncols:
из вашего кода, чтобы заставить ее работать.
Полный рабочий код
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import matplotlib
import sys
print (sys.version)
# 3.6.5 |Anaconda, Inc.|
print (matplotlib.__version__)
# 2.2.2
print (pd.__version__)
# 0.23.0
x = np.linspace(0,10,100)
nrows = 4
ncols = 3
fig, axes = plt.subplots(nrows, ncols, sharex=True,figsize=(12,6))
for i, ax in enumerate(axes.reshape(-1)):
y = np.cos(x+i*np.pi)
df = pd.DataFrame(y, index=x)
df.plot(ax=ax, legend=None) # doesn't show top labels
if i < 3:
ax1 = ax.twiny()
ax1.set_xlim(ax.get_xlim())
ax1.tick_params(axis='x', which='both', bottom=False, top=True, labelbottom=False)
plt.tight_layout()
plt.show()