2011-08-08 23 views
0

我一直在把這個繪圖程序。它從一組文件中去除數字,進行一些數學計算,然後繪製條形圖以顯示數字如何變化。Pylab.bar plotting dificulty

從我所知道的,該程序的pylab.bar()部分是無法正確採取計算的數據並使用它。該程序不斷要求將高度設置爲某個數字或標量。我認爲問題在於我開始將事情轉換爲字符串,但我不確定。任何建議或幫助將是美好的!

import glob 
import numpy 
from numpy import * 
import pylab 
from pylab import * 


lable = "c 1n0 an1 an2 an3 an4".split() 
fnam = "Cmos*.csv" 
opfnam = glob.glob(fnam) 
for s in opfnam: 
    words = s.strip().split("[]") 
    a = open(words[0], "r").readlines() 
    b = str(a).split(',') 
    simp = str(b).translate(None, """'()["n]""") 
    t = simp.split(',') 
    c = t[2] 
    an0 = t[3] 
    an1 = t[4] 
    an2 = t[5] 
    an3 = t[6] 
    an4 = t[7] 
    tie = t[0]+t[1] 
    data = c,an0, an1, an2, an3, an4 
    print data 
    y = (-1,0,1,2,3,4) 
    bar(y, data, width = .75) 
    show()" 

回答

1

我認爲你是對的,它與你的數據仍然是字符串格式有關。這是你的程序的條紋縮小版本:

import pylab 
from pylab import * 

simp = "11,22,1,.5,.75,1,1.2,.9" 
t = [float(val) for val in simp.split(',')] 
c = t[2] 
an0 = t[3] 
an1 = t[4] 
an2 = t[5] 
an3 = t[6] 
an4 = t[7] 
tie = t[0]+t[1] 
data = c,an0, an1, an2, an3, an4 
print data 
y = (-1,0,1,2,3,4) 
bar(y, data, width = .75) 
show() 

我設置simp以逗號分隔的隨機值的列表;我猜這就是你解析文件的每一行後的simp。注意:在將列表分配給t之前,我已經使用列表理解將分割列表的每個值轉換爲float()的值。如果要製作整數列表t,當然要用int()代替float()

相關問題