0

所以我做了一个程序来做我需要的,主要是从我的数据中绘制直方图,但我有一些问题:

这是程序:

# -*- coding: cp1250 -*-
from __future__ import division
from numpy import *
from matplotlib import rc
from matplotlib.pyplot import *
import numpy as np
import matplotlib.pyplot as plt


data = loadtxt("mioni.txt", int)

nuz = len(data)
nsmp = 20
duz = int(nuz/nsmp)

L = []

for i1 in range(0,nsmp):
    suma = 0
    for i2 in range(0,duz):
        suma += data[i1*duz+i2]
    L.append(suma)

print L


plt.hist(L, 20, normed=1, facecolor='blue', alpha=0.75)
plt.xlabel('t(\mu s)')
plt.ylabel('Broj događaja')
plt.axis([0,10,0,300])
plt.grid(True)

plt.show()

编辑:所以我设法处理丑陋的总和,但现在我的直方图不起作用:(数据在这里:http://dropcanvas.com/kqjem

怎么了?我收到大量错误和 python 崩溃:\

4

2 回答 2

2

问题来自于有一个离散的数据集,看起来你将bins参数设置为不合适的东西。使用pylab.hist参数histtype="stepfilled"让它们在没有线条的情况下接触。这里有一些例子:

import numpy as np
import pylab as plt

# Sample data
X1 = np.random.exponential(1.0,size=5000)
X2 = [int(z) for z in X1]

plt.subplot(221)
plt.hist(X1,bins=50)
plt.title('Continuous Data')

plt.subplot(222)
plt.hist(X2,bins=50)
plt.title('Discrete Data')

plt.subplot(223)
plt.hist(X2,histtype='stepfilled')
plt.title('Discrete Data Filled')

plt.show()

在此处输入图像描述

于 2013-02-28T14:55:16.300 回答
1

使用numpy.histogramhttp ://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html

matplotlib.pyplot.hist: http: //matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist

例如:

plt.hist(data, bins=20)
于 2013-02-28T14:24:26.457 回答