гистограмма matplotlib с равной шириной столбцов - PullRequest
0 голосов
/ 01 октября 2019

Я использую гистограмму для отображения распределения. Все работает нормально, если интервалы между бункерами одинаковы. Но если интервал отличается, то ширина полосы является подходящей (как и ожидалось). Есть ли способ установить ширину полосы независимо от размера бункеров?

Это то, что у меня есть

Это то, что я пытаюсьничья

from matplotlib import pyplot as plt

my_bins = [10, 20, 30, 40, 50, 120]
my_data = [5, 5, 6, 8, 9, 15, 25, 27, 33, 45, 46, 48, 49, 111, 113]

fig1 = plt.figure()

ax1 = fig1.add_subplot(121)
ax1.set_xticks(my_bins)
ax1.hist(my_data, my_bins, histtype='bar', rwidth=0.9,)
fig1.show()

1 Ответ

0 голосов
/ 01 октября 2019

Я не могу пометить ваш вопрос как дубликат, но я думаю мой ответ на этот вопрос может быть то, что вы ищете?


Я не уверен, как выЯ буду иметь смысл результата, но вы можете использовать numpy.histogram, чтобы вычислить высоту ваших баров, а затем нанести их непосредственно на произвольную шкалу х.

x = np.random.normal(loc=50, scale=200, size=(2000,))
bins = [0,1,10,20,30,40,50,75,100]
fig = plt.figure()
ax = fig.add_subplot(211)
ax.hist(x, bins=bins, edgecolor='k')
ax = fig.add_subplot(212)
h,e = np.histogram(x, bins=bins)
ax.bar(range(len(bins)-1),h, width=1, edgecolor='k')

enter image description here


РЕДАКТИРОВАТЬ Здесь приведена настройка для меток x-tick, чтобы легче было видеть соответствие.

my_bins = [10, 20, 30, 40, 50, 120]
my_data = [5, 5, 6, 8, 9, 15, 25, 27, 33, 45, 46, 48, 49, 111, 113]

fig = plt.figure()
ax = fig.add_subplot(211)
ax.hist(my_data, bins=my_bins, edgecolor='k')
ax = fig.add_subplot(212)
h,e = np.histogram(my_data, bins=my_bins)
ax.bar(range(len(my_bins)-1),h, width=1, edgecolor='k')
ax.set_xticks(range(len(my_bins)-1))
ax.set_xticklabels(my_bins[:-1])

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...