Создание гистограммы, которая сортирует значения массива в ячейки и показывает частоту элементов в ячейках - PullRequest
0 голосов
/ 21 ноября 2018

Для массива значений от 0 до 1 я хочу создать гистограмму из 5 бинов, где бин один показывает частоту (число раз), отображаемые в массиве от 0 до 0,2, бин 2 показывает частотучисла между 0,2-0,4, ячейка 3 составляет 0,4-0,6, ячейка 4: 0,6-0,8, ячейка 5 0,8-1.

import numpy as np
arr = np.array([0.5, 0.1, 0.05, 0.67, 0.8, 0.9, 1, 0.22, 0.25])
y, other_stuff = np.histogram(arr, bins=5)
x = range(0,5)
graph = plt.bar(x,height=y)
plt.show()

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Это то, что вы ищете?

import numpy
from numpy.random import random
import matplotlib.pyplot as plt
arr = random(100)
y, other_stuff = numpy.histogram(arr, bins=5)
x = numpy.linspace(0.1, 0.9, 5)
graph = plt.bar(x, height=y, width=0.2, edgecolor='black')
plt.show()

Как указано в комментарии ниже, фрагмент выше не определяет края бинов в вызове гистограммы ().Следующий ниже исправляет это.

import numpy
import matplotlib.pyplot as plt
arr = numpy.array([0.5, 0.1, 0.05, 0.67, 0.8, 0.9, 1, 0.22, 0.25])
y, other_stuff = numpy.histogram(arr, bins=numpy.linspace(0, 1, 6))
graph = plt.bar(numpy.linspace(0.1, 0.9, 5), height=y, width=0.2,
                edgecolor='black')
plt.show()
0 голосов
/ 21 ноября 2018

Я думаю, что вы ищете метод hist для matplotlib.

С вашим образцом массива код будет выглядеть так:

plt.hist(arr, bins=np.linspace(0,1,6), ec='black')

enter image description here

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