2016-03-02 68 views
1

我需要從2D組數據創建個段的直方圖,像這樣的(這基本上是一組來自不同設備的報告,每行報告其狀態某個小時的設備):在Python/numpy中使用百分比箱子的直方圖?

# hour # parameter (in percents) 
00  10 
00  20 
00  30 
01  40 
01  50 
... 

所以會有由小時和百分分級,就像下面的gnuplot的示例設備的報告一個疊加柱狀圖總結,與代表百分倉的報告落入(比如說0 <ř< 10%,10% < r < 20%等等)。

enter image description here

現在我只想到了創建一個二維數組和餵養這一切GNUPLOT這樣的:

#!/usr/bin/python 

import numpy as np 
import sys 

data = np.loadtxt('mac-quality.csv') 
out = [ [ 0 for k in xrange(10) ] for i in (xrange(24)) ] 

for i in data: 
    hour = i[0].astype(int) 
    quality = i[1].astype(int) 
    for bin in xrange(10): 
     pct = bin * 10 
     if quality > pct and quality < (pct + 10): 
      print('Data: %s, H: %s Percentile: %s:') % (i, hour, pct) 
      out[hour][bin] += 1 
# print(out) 

什麼是蟒蛇內產生這些直方圖的正確方法?

+0

你可以提供'cvs'數據的exceprt嗎? –

回答

1

這完全使用您的python代碼,但它擴展了一些Matplotlib庫代碼,它通常用於python繪圖。這通常取代python中的gnuplot。

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

data = np.loadtxt('mac-quality.csv') 
out = [ [ 0 for k in xrange(10) ] for i in (xrange(24)) ] 

# Number of bins you have 
nBins = 10 

for i in data: 
    hour = i[0].astype(int) 
    quality = i[1].astype(int) 
    for bin in xrange(10): 
     pct = bin * 10 
     if quality > pct and quality < (pct + 10): 
      print('Data: %s, H: %s Percentile: %s:') % (i, hour, pct) 
      out[hour][bin] += 1 


plt.hist(data, nBins, normed=1, histtype='bar', stacked=True) 
plt.title('Some Title') 
plt.show() 
+0

不完全是這樣,它繪製了按百分比分類的數據,而我想要一個堆積的百分比直方圖在一小時內分級(小時是X軸,百分位數是堆積的直方圖條內的分箱)。但是,謝謝,這是一個好的開始。 –

相關問題