Это интересно.
Вы можете посмотреть на прямоугольники сгенерированных:
ax = plt.subplot(111)
h, bins, rects = ax.hist([2, 2])
for r in rects:
print(r.get_bbox())
# Bbox(x0=1.5, y0=0.0, x1=1.6, y1=0.0)
# Bbox(x0=1.6, y0=0.0, x1=1.7, y1=0.0)
# Bbox(x0=1.7, y0=0.0, x1=1.8, y1=0.0)
# Bbox(x0=1.8000000000000003, y0=0.0, x1=1.9000000000000001, y1=0.0)
# Bbox(x0=1.9, y0=0.0, x1=2.0, y1=0.0)
# Bbox(x0=1.9999999999999998, y0=0.0, x1=2.0999999999999996, y1=2.0)
# Bbox(x0=2.1000000000000005, y0=0.0, x1=2.2000000000000006, y1=0.0)
# Bbox(x0=2.2, y0=0.0, x1=2.3, y1=0.0)
# Bbox(x0=2.3, y0=0.0, x1=2.4, y1=0.0)
# Bbox(x0=2.4000000000000004, y0=0.0, x1=2.5000000000000004, y1=0.0)
Очевидно, что функция гистограммы генерирует прямоугольник для каждого бина, даже пустые. Хотя они имеют высоту 0, они передаются визуализатору, а в некоторых случаях ложное что-то нарисовано.
Я не знаю, как предотвратить это. Однако есть решение, но оно довольно хакерское. Функция hist
помещает прямоугольный патч в ось для каждого бункера. Можно вручную перебрать эти патчи и удалить их с нулевой высотой:
ax = plt.subplot(111)
h, bins, rects = ax.hist([2, 2])
ax.patches = [p for p in ax.patches if p.get_height() > 0]
Что такое возврат, если вы пишете '' np.sum ((ar <2)) ''? – MSeifert
Я возвращаюсь к 0. –
Можете ли вы отредактировать массив или по крайней мере столько же массива в вопросе, чтобы он все еще показывал этот «удар» в 0? Постарайтесь сделать это как можно меньше. :) – MSeifert