Вам повезло!plot
имеет zorder
kwarg.
Я проверил его на bar
, просто чтобы быть уверенным, используя пример, который у меня есть.
summer = ax.bar(index, df["Crime Type Summer"].value_counts(), bar_width,
label="Summer", zorder=2)
winter = ax.bar(index, df["Crime Type Winter"].value_counts(),
bar_width, label="Winter", zorder=1)
Дает:
![enter image description here](https://i.stack.imgur.com/btxiY.png)
И если я переверну его:
summer = ax.bar(index, df["Crime Type Summer"].value_counts(), bar_width,
label="Summer", zorder=1)
winter = ax.bar(index, df["Crime Type Winter"].value_counts(),
bar_width, label="Winter", zorder=2)
![enter image description here](https://i.stack.imgur.com/l9tOU.png)
Редактировать:Я посмотрел на часть «бар в баре», и, как отмечалось в комментариях в другом месте, кажется, вам нужно будет вручную устанавливать zorders на основе сортировки их значений.Возможно, вы захотите изменить ширину полосы на основе этого рассчитанного zorder, чтобы получить этот визуальный эффект.
Полный код, который я использую в качестве справочного примера, приведен ниже для ясности:
import random
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
s = "Crime Type Summer|Crime Type Winter".split("|")
j = {x: [random.choice(["ASB", "Violence", "Theft", "Public Order", "Drugs"]) for j in range(300)] for x in s}
df = pd.DataFrame(j)
index = np.arange(5)
bar_width = 0.35
fig, ax = plt.subplots()
summer = ax.bar(index, df["Crime Type Summer"].value_counts(), bar_width,
label="Summer", zorder=1)
winter = ax.bar(index, df["Crime Type Winter"].value_counts(),
bar_width, label="Winter", zorder=2)
ax.set_xlabel('Category')
ax.set_ylabel('Incidence')
ax.set_title('Crime incidence by season, type')
ax.set_xticks(index)
ax.set_xticklabels(["ASB", "Violence", "Theft", "Public Order", "Drugs"])
ax.legend()
plt.show()