2014-05-16 44 views
0

我正在使用下面的代碼來創建一個範圍內的隨機數字的加權列表。將加權數字轉換爲多個直方圖

import csv 
import random 
import numpy as np 
import matplotlib.pyplot as plt 

itemsList = [] 

rnd_numbs = csv.writer(open("rnd_numbs.csv", "wb")) 
rnd_numbs.writerow(['number']) 

items = [1, 2, 3, 4, 5] 
probabilities= [0.1, 0.1, 0.2, 0.2, 0.4] 
prob = sum(probabilities) 
print prob 
c = (1.0)/prob 
probabilities = map(lambda x: c*x, probabilities) 
print probabilities 

ml = max(probabilities, key=lambda x: len(str(x)) - str(x).find('.')) 
ml = len(str(ml)) - str(ml).find('.') -1 
amounts = [ int(x*(10**ml)) for x in probabilities] 
itemsList = list() 
for i in range(0, len(items)): 
    itemsList += items[i:i+1]*amounts[i] 
for item in itemsList: 
    rnd_numbs.writerow([item]) 

我想什麼做的是(A)列出這些數字隨機下來的CSV列,不知道爲什麼他們走出預排序,(B)列出的數量下降了comumn而不是作爲一個(c)按定義的時間間隔創建並保存多個腦電圖,如前100個號碼,前250個號碼,後500個號碼,...至末尾

對於(c)我想爲數據列表的各種截止點創建多個圖片。

Histogram Example

嘗試在直方圖

x = itemsList[0:20] 

fig = plt.figure() 
ax = fig.add_subplot(111) 

# 100 is the number of bins 
ax.hist(x, 10, normed=1, facecolor='green', alpha=0.75) 

ax.set_xlim(0, 5) 
ax.set_ylim(0, 500) 
ax.grid(True) 

plt.show() 
+0

不確定c是什麼意思,你能舉個例子嗎? – cmd

+0

隨機部分從哪裏來? –

+0

@cmd我試圖採用加權方案在每個時間段產生數字,然後在特定的滾動時間間隔內查看分佈的樣子。它將被用作教學工具來展示中心極限定理和一致性如何工作。這種在線工具是無聊的,所以我試圖做我自己的。 – CJ12

回答

0

至於你的問題的第三部分,看看matplotlib(和numpy.loadtxt()讀取數據)。有很多examples可以幫助您瞭解基礎知識以及高級功能。下面是繪製隨機正常分佈的直方圖的一個簡單的例子:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.random.randn(10000) 

fig = plt.figure() 
ax = fig.add_subplot(111) 

# 100 is the number of bins 
n = ax.hist(x, 100, facecolor='green', alpha=0.75) 

# n[0] is the array of bin heights, 
# n[1] is the array of bin edges 
xmin = min(n[1]) * 1.1 
xmax = max(n[1]) * 1.1 
ymax = max(n[0]) * 1.1 

ax.set_xlim(xmin, xmax) 
ax.set_ylim(0, ymax) 
ax.grid(True) 

plt.show() 

它給你一個很好的形象:

Matplotlib histogram example

您可以循環使用的不同範圍,以生成多個圖像的數據,並將生成的圖形以多種格式保存,無論是否先預覽它們。

+0

除了接管45分鐘以獲得'numpy'和'matlibplot'工作(他們終於做到了)。我甚至無法讓我的一個圖形填充。我拿了一些例子和你的代碼,並做了現在編輯到我的問題。 – CJ12

+0

@ CJ12 - 你在使用什麼平臺?如果是Windows,請查看Christoph Gohlke的[用於Windows的Python擴展包](http://www.lfd.uci.edu/~gohlke/pythonlibs/)用於科學計算的預先打包Python模塊的存儲庫。您可以獲取[MKL](https://software.intel.com/zh-cn/intel-mkl) - 增強的[NumPy版本](http://www.lfd.uci.edu/~gohlke/pythonlibs /#numpy),['matplotlib'](http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib)及其所有依賴關係。在OS X上,我使用MacPorts,並且應該在大多數Linux發行版中提供軟件包。 – MattDMo

+0

@ CJ12 - 我不太確定你的問題與陰謀。繪圖窗口是否出現,只是缺少圖形,還是甚至沒有出現?你如何運行腳本 - 命令行或通過編輯器/ IDE?你有沒有收到任何錯誤信息?你能否成功運行任何'matplotlib' [示例文件](http://matplotlib.org/examples/index.html)? – MattDMo