循环遍历矢量列表以为每个矢量创建直方图

时间:2016-06-12 21:16:52

标签: python numpy matplotlib statistics histogram

我正在为CFD模拟的输出数据创建直方图。

由于输出变量不止一个,我想循环包含输出变量的列表,并为输出变量的每个直方图创建单独的数字。

以下是我目前工作的示例代码:

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

# set default directory and import data

path="C:/Users/Pacman/Data files"
os.chdir(path)
data =np.genfromtxt('MCS_10000cases_Sc_B.txt')

#Create output vectors

Power=data[:,][:,9]
Per_Lk=data[:,][:,10]
VFR_Fan=data[:,][:,11]
VFR_MF=data[:,][:,13]
TP=data[:,][:,14]

#Plotting histgram

numbins=40
var=['Power','Per_Lk','VFR_Fan','VFR_MF','TP']

for i in var:
    plt.hist(i,numbins,color='g')
    plt.figure()
    plt.show()

当我运行上面显示的代码时,它给出了一个很长的错误,以下面的语句结束:

  

TypeError:未确定对象的len()

当我尝试在没有循环的情况下逐个绘制直方图时,它可以正常工作。我已经尝试查找错误并实施一些修复,但它没有帮助。

任何有关修复的想法都将受到高度赞赏。

1 个答案:

答案 0 :(得分:3)

尝试使用此代码:

var = {'Power': data[:,][:,9],
       'Per_Lk': data[:,][:,10],
       'VFR_Fan': data[:,][:,11],
       'VFR_MF': data[:,][:,13],
       'TP': =data[:,][:,14],
       }
numbins = 40

for i in var:
    plt.hist(var[i], numbins, color='g')
    plt.figure()
    plt.show()