Как лучше всего использовать history () для отображения кумулятивной и нормированной гистограммы? - PullRequest
0 голосов
/ 01 ноября 2011

У меня проблема при работе с набором данных, значение которого колеблется от 0 до десятков тысяч.И нет проблем, чтобы показать гистограмму всего набора данных с помощью Hist ().Однако, если я только хочу показать кумулятивную и нормированную подробную гистограмму, используя, скажем, x = [0, 120], я должен использовать 600000 бинов, чтобы обеспечить детализацию.

Сложная проблема в том, что если я просто использую диапазон (0, 120), чтобы показать нормированную и совокупную историю, он будет заканчиваться на 1. Но на самом деле он намного меньше, чем реальное «1», так как он простонормируется в этом небольшом диапазоне данных.Может ли кто-нибудь иметь какие-либо идеи, как использовать hist () в matplotlib для решения этой проблемы?Я думал, что это не должно быть настолько сложным, что мне нужно написать другую функцию для рисования нужной мне истории.

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

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

Я не могу заставить plt.hist () хорошо поиграть с предложением киборга, поэтому я выполнил сборку и нормализацию вручную:

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt

from numpy.random import normal

inp = np.abs(normal(0, 100000, 100000))

bins = range(0, 120)
a,b = np.histogram(inp, bins = bins)
bar_edges = b[:-1]
bar_width = b[1] - b[0]
bar_height = (np.cumsum(a) + sum(inp<min(bins))) / len(inp)
plt.figure(1)
plt.bar(bar_edges, bar_height, width = bar_width)
plt.show()
1 голос
/ 01 ноября 2011

Вы можете установить bins в список, а не целое число, например, bins=[1,2,3,..,120,30000,60000].

Чтобы ответить на ваш коммент ниже, вот выдержка из документации :

бинов :

Любойцелое число бинов или последовательность, дающая бины.Если bin является целым числом, будут возвращены ребра + 1 ребра bin, в соответствии с numpy.histogram () для numpy версии> = 1.3 и с аргументом new = True в более ранних версиях.Неравномерно расположенные ячейки поддерживаются, если ячейки представляют собой последовательность.

И приведен пример с кумулятивной нормализованной гистограммой.Обратите внимание на эффект bins = [100,125,150,160,170,180,190,200,210,220,230,240,250,275,300] на этом столбчатом графике, когда первые два бара шире, чем средние.enter image description here

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