Ich arbeite an der Erstellung von Histogrammen für Ausgabedaten aus einer CFD-Simulation.Looping über eine Liste von Vektoren, um Histogramme für jeden Vektor zu erstellen
Da Ausgangsvariablen viel mehr als eins sind, möchte ich die Liste mit den Ausgangsvariablen überlappen und für jedes Histogramm der Ausgangsvariablen eine separate Zahl erstellen.
Hier ist ein Beispielcode meiner bisherigen Arbeit:
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()
Wenn ich den Code ausführen oben gezeigt, gibt mir einen langen Fehler, die mit der folgenden Aussage endet:
TypeError: len() of unsized object
Wenn Ich versuche, Histogramme einzeln zu zeichnen, ohne die Schleife funktioniert es gut. Ich habe versucht, den Fehler nachzuschlagen und einige Korrekturen zu implementieren, aber es hat nicht geholfen.
Alle Ideen für die Korrekturen werden sehr geschätzt.
Sie haben durch die Einführung ein leichtes zwicken in Ihrem ursprünglichen Code, nämlich '' plt.hist (eval (i), numbins, color =‘das gleiche Ergebnis erhalten könnten g ') '', aber ich denke, es ist besser, in diesem Fall nicht die Funktion '' eval() '' zu verwenden. – Tonechas
Funktioniert perfekt. Vielen Dank! Obwohl ich immer noch nicht verstehen kann, was nicht die Variable "i" ist, die sich in meinem Code auf die Vektoren "var" bezieht. Es wird großartig sein, wenn Sie ein wenig darauf eingehen können. – SAkht312
In Ihrem ursprünglichen Code '' var'' ist eine Liste von Strings, und daher hat die Indexvariable '' i' 'in der ersten Iteration den Wert' ''Power''',' '' Per_Lk''' in der Zweitens und so weiter, während in meiner Lösung "var" als Wörterbuch definiert ist, so dass "i" genau die gleichen Werte in der for-Schleife wie in Ihrem Code und "var [i]" annimmt 'bezieht sich auf die entsprechenden Daten. – Tonechas