В matplotlib есть встроенная функция - bxp
- которая позволяет вам определять вычисленную статистику, а не необработанные данные для вычисления, избегая необходимости создавать свою собственную функцию.
Вам нужно будет вызывать его как метод из вашего Axes
объекта, а не из plt
:
import matplotlib.pyplot as plt
stats = [
{'med': 5, 'q1': 2, 'q3': 6, 'whislo': 1, 'whishi': 8},
{'med': 4, 'q1': 2, 'q3': 6, 'whislo': 1, 'whishi': 8}
]
_, ax = plt.subplots();
ax.bxp(stats, showfliers=False);
Важно, что ваши входные данные должны представлять собой список словарей, соответствующихк списку ящиков (даже если только 1) для рисования.
![enter image description here](https://i.stack.imgur.com/WKTvk.png)