Создание гистограммы Python без Pylab

Мне нужно создать список случайных чисел с гауссовым дистрибутивом (я могу это сделать), а затем взять эти числа и построить их на гистограмме. Моя проблема в том, что я должен делать это, не используя встроенную функцию гистограммы в pylab (или любой другой пакет, если на то пошло), и я полностью потеряю. Я смотрю онлайн, и я не нашел ничего, что объясняет, как я буду заниматься этим, кто-нибудь из вас знает, что я могу сделать? Заранее спасибо.

2 Solutions collect form web for “Создание гистограммы Python без Pylab”

Предположим, у вас есть массив numpy который представляет ваши случайные числа

  rnd_numb=array([ 0.48942231, 0.48536864, 0.48614467, ..., 0.47264172, 0.48309697, 0.48439782]) 

Чтобы создать гистограмму, вам нужно всего лишь заполнить ваши данные. Итак, давайте создадим массив, который определяет биннинг

  bin_array=linspace(0,1,100) 

В этом случае мы создаем 100 линейно разнесенных бункеров в диапазоне от 0 до 1

Теперь, чтобы создать гистограмму, вы можете просто сделать

  my_histogram=[] for i in range(len(bin_array)-1): mask = (rnd_numb>=bin_array[i])&(rnd_numb<bin_array[i+1]) my_histogram.append(len(rnd_numb[mask])) 

Это создает список, содержащий подсчеты в каждом бине. Наконец, если вы хотите визуализировать свою гистограмму, вы можете сделать

  plot ((bin_array[1:]+bin_array[:-1])/2.,my_histrogram) 

вы также можете попробовать step или bar .

Быстрый способ вычисления гистограммы состоит в том, чтобы одновременно просматривать список по одному элементу, сортировать, в каком бине он должен быть, а затем подсчитывать количество записей в каждом бине.

 hist_vals = np.zeros(nbins) for d in data: bin_number = int(nbins * ((d - min_val) / (max_val - min_val))) hist_vals[bin_number] += 1 

Обратите внимание, что это O (len (data)) с небольшим предварительным коэффициентом.

Более разумный способ написать это – векторизация хэш-функции:

 bin_number = (nbins * ((data - min_val) / (max_val - min_val))).astype(np.int) 

и используйте заклинание магии для суммирования:

 hist_vals[bin_number] += 1 # numpy slicing magic 

Если вас беспокоит скорость, вы можете использовать функции numpy, которые по существу делают это, но ставят петли на уровне c:

 bin_nums = np.digitize(data, bins) - 1 hist_vals = np.bincount(bin_nums) 
  • Matplotlib дискретный цветной бар
  • Как сохранить заговор Seaborn в файл
  • Выравнивание таблицы по оси x с использованием matplotlib python
  • ImportError: нет имен модулей «matplotlib» Python 3.3
  • Вручную установить цвет точек в легенде
  • Маркировка гистограммного блока matplotlib со стрелкой
  • 2d hsv цветовое пространство в matplotlib
  • python matplotlib и PyQT для построения нескольких вкладок - навигация
  • Ноутбук IPython перестает оценивать ячейки после plt.show ()
  • Ярлыки меток Labplale Matplotlib, знак минус слишком длинный в латексном шрифте
  • Matplotlib: установить ось жесткой только на ось x или y
  • Python - лучший язык программирования в мире.