Вы можете сделать это, используя галочки.
Позвольте мне представить этот подход следующим простым сюжетом:
from matplotlib import pyplot as plt
ax = plt.axes()
ax.set_xlim(0, 3)
ax.set_ylim(0, 3)
for i in range(3):
for j in range(3):
ax.fill_between((i, i+1), j, j+1)
ax.fill_between((i, i+1), j, j+1)
ax.fill_between((i, i+1), j, j+1)
plt.show()

Я не буду фокусироваться ни на цветах, ни на стиле тиков, но знаю, что вы можете изменить их очень легко.
Вы можете создать объект Axes
, который будет иметь общую ось Y ax
с ax.twiny()
. Затем вы можете добавить X тиков на этот новый Axes
, который появится в верхней части графика:
from matplotlib import pyplot as plt
ax = plt.axes()
ax.set_xlim(0, 3)
ax.set_ylim(0, 3)
for i in range(3):
for j in range(3):
ax.fill_between((i, i+1), j, j+1)
ax.fill_between((i, i+1), j, j+1)
ax.fill_between((i, i+1), j, j+1)
ax2 = ax.twiny()
ax2.set_xlim(ax.get_xlim())
ax2.set_xticks([0.5, 1.5, 2.5])
ax2.set_xticklabels([13, 0, 0])
plt.show()

Чтобы отобразить отметки для оси X, вы должны создать объект Axes
, который разделяет ось Y ax
с ax.twiny()
. Это может показаться нелогичным, но если вместо этого вы используете ax.twinx()
, то изменение X тиков ax2
также изменит ax
, потому что они на самом деле одинаковы.
Затем вы хотите установить для окна X значение ax2
, чтобы оно имело три квадрата.
После этого вы можете установить галочки: по одному в каждом квадрате, в горизонтальном центре, поэтому на [0.5, 1.5, 2.5]
.
Наконец, вы можете установить метки для отображения желаемого значения.
Затем, вы просто делаете то же самое с галочками Y:
from matplotlib import pyplot as plt
ax = plt.axes()
ax.set_xlim(0, 3)
ax.set_ylim(0, 3)
for i in range(3):
for j in range(3):
ax.fill_between((i, i+1), j, j+1)
ax.fill_between((i, i+1), j, j+1)
ax.fill_between((i, i+1), j, j+1)
ax2 = ax.twiny()
ax2.set_xlim(ax.get_xlim())
ax2.set_xticks([0.5, 1.5, 2.5])
ax2.set_xticklabels([13, 0, 0])
ax3 = ax.twinx()
ax3.set_ylim(ax.get_ylim())
ax3.set_yticks([0.5, 1.5, 2.5])
ax3.set_yticklabels([0, 6, 9])
plt.show()
