У меня есть машины с двумя разными версиями matplotlib (точнее, мои студенты). Более новый plt.hist
принимает аргумент density
, а более старый принимает аналогичный аргумент normed
. Эти аргументы позволяют мне строить пропорции, а не считать. Я думал, что смогу запустить это с try... except...
, но столкнулся с проблемой.
Мой код:
import matplotlib.pyplot as plt
import numpy as np
N=1000
sizes = [np.random.binomial(100, 0.03) for counter in range(N)]
fig = plt.figure(1)
main = plt.axes()
try:
main.hist(sizes, bins = range(21), density = True)
except AttributeError:
main.hist(sizes, bins = range(21), normed = True)
main.axis(ymax=0.4)
![enter image description here](https://i.stack.imgur.com/u5xIF.png)
И вот где я не установил ymax
![enter image description here](https://i.stack.imgur.com/SliRV.png)
Это работает с Matplotlib v2.0.0 (да, старый, я Я полагаю, что где-то есть зависимость, которая блокирует наши попытки обновления).
То, что здесь происходит, заключается в том, что первая попытка построения графика создает ошибку, но к тому времени она уже вычерчивает счетчики для цифры , Так что на самом деле происходит то, что я получаю подсчеты, рассчитанные с помощью бита try
, а пропорции - с помощью бита except
.
Как мне лучше обойти эту проблему, давая код для студентов что они не должны изменять?