2015-01-10 2 views
5

Мне нужно создать гистограмму, которая отображает линию, а не шаг или гистограмму. Я использую python 2.7. Функция plt.hist ниже отображает ступенчатую линию, и ящики не выстраиваются в линию в функции plt.plot.Есть ли чистый способ создания диаграммы гистограмм линии в Python?

import matplotlib.pyplot as plt 
import numpy as np 
noise = np.random.normal(0,1,(1000,1)) 
(n,x,_) = plt.hist(noise, bins = np.linspace(-3,3,7), histtype=u'step') 
plt.plot(x[:-1],n) 

мне нужна линия коррелировать со счетом каждого Бинь в силосе центрах, как если бы там был histtype = u'line «флаг, чтобы пойти с ALIGN = u'mid» флаг

+0

В отличие от форумов, мы не используем «Спасибо» или «Любая помощь оценена» или подписи на [so]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -Удалена-от-сообщений). –

ответ

5

Использование SciPy , вы могли бы use stats.gaussian_kde к estimate the probability density function:

import matplotlib.pyplot as plt 
import numpy as np 
import scipy.stats as stats 

noise = np.random.normal(0, 1, (1000,)) 
density = stats.gaussian_kde(noise) 
n, x, _ = plt.hist(noise, bins=np.linspace(-3, 3, 50), 
        histtype=u'step', normed=True) 
plt.plot(x, density(x)) 
plt.show() 

enter image description here

2

Matplotlib's thumbnail gallery, как правило, очень полезно в таких ситуациях, как йо Урс. Сочетание this и this one из галереи с некоторыми настройками, вероятно, очень близко к тому, что вы имеете в виду:

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

mu = 0 
sigma = 1 
noise = np.random.normal(mu, sigma, size=1000) 
num_bins = 7 
n, bins, _ = plt.hist(noise, num_bins, normed=1, histtype='step') 
y = mlab.normpdf(bins, mu, sigma) 
plt.plot(bins, y, 'r--') 
plt.show() 

enter image description here

Кроме того, увеличение количества контейнеров помогает ...

enter image description here