Я работаю над созданием гистограмм для выходных данных из моделирования 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() of unsized object
Когда Я пытаюсь построить гистограммы один за другим, без цикла это прекрасно работает. Я попытался найти ошибку и реализовать некоторые исправления, но это не помогло.
Любые идеи для исправлений будут высоко оценены.
Вы могли бы получить тот же результат, вводя небольшой твик в исходном коде, а именно '' plt.hist (Eval (я), numbins, цвет =» g ') '', но я думаю, что предпочтительнее не использовать функцию '' eval() '' в этом конкретном случае. – Tonechas
Работает отлично. Спасибо! Хотя я все еще не могу понять, что не является переменной «i», относящейся к векторам «var» в моем коде. Будет здорово, если вы сможете немного разобраться в этом. – SAkht312
В вашем исходном коде '' var'' - это список строк, поэтому индексная переменная '' i'' имеет значение '' 'Power''' на первой итерации '' 'Per_Lk''' в второй и т. д., тогда как в моем решении '' var'' определяется как словарь, так что '' i'' принимает одинаковые значения во всем цикле for, как в вашем коде, и '' var [i] ' 'относится к соответствующим данным. – Tonechas