Как сделать так, чтобы моя гистограмма неравных корзин показывалась правильно? - PullRequest
0 голосов
/ 11 июня 2019

Мои данные состоят из следующего:

Большинство чисел <60, а затем несколько выбросов в 2000-х годах. </p>

Я хочу отобразить его в гистограмме со следующими диапазонами бинов:

0-1, 1-2, 2-3, 3-4, ..., 59-60, 60-max

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.axes as axes

b = list(range(61)) + [2000] # will make [0, 1, ..., 60, 2000]

plt.hist(b, bins=b, edgecolor='black')
plt.xticks(b)

plt.show()

Это показывает следующее:

enter image description here

По сути, вы видите, что все цифры 0 ... 60 согнуты вместе слева, а 2000 - справа. Это не то, что я хочу.

Поэтому я удаляю [2000] и получаю что-то вроде того, что ищу:

enter image description here

Как видите, лучше, но у меня все еще есть следующие проблемы:

Как это исправить, чтобы на графике не было пустого пространства (большой разрыв до 0 и после 60).

Как исправить это так, чтобы после 60 был тик 2000, который отображается в самом конце, при этом оставаясь примерно таким же интервалом (не как первый?)

1 Ответ

0 голосов
/ 11 июня 2019

Вот одно хакерское решение, использующее некоторые случайные данные.Я все еще не совсем понимаю ваш второй вопрос, но я пытался что-то сделать, основываясь на ваших формулировках

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.axes as axes

fig, ax = plt.subplots(figsize=(12, 6))
data= np.random.normal(10, 5, 5000)

upper = 31
outlier = 2000

data = np.append(data, 100*[upper])
b = list(range(upper)) + [upper]

plt.hist(data, bins=b, edgecolor='black')
plt.xticks(b)
b[-1] = outlier
ax.set_xticklabels(b)
plt.xlim(0, upper)
plt.show()

enter image description here

...