Fehler beim looping zu produzieren Nebenhandlungen
Ich habe eine Frage zu einer Fehlermeldung erhalte ich beim Schleifen eine Handlung mehrere Nebenhandlungen von einem Daten-frame.
Meine Daten-frame hat viele Spalten, von denen die I-Schleife über eine Nebenhandlung jeder Spalte.
Dies ist mein code
def plot(df):
channels=[]
for i in df:
channels.append(i)
fig, ax = plt.subplots(len(channels), sharex=True, figsize=(50,100))
plot=0
for j in df:
ax[plot].plot(df["%s" % j])
ax[plot].set_xlabel('%s' % j)
plot=plot+1
plt.tight_layout()
plt.show()
Bekomme ich den plot produziert feinen, aber auch ein leeres Bild und der Fehlermeldung:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\AClayton\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 538, in runfile
execfile(filename, namespace)
File "C:/Users/AClayton/Desktop/Data/TS.py", line 67, in <module>
plot(all_data)
File "C:/Users/AClayton/Desktop/Data/TS.py", line 49, in plot
ax[plot].plot(reader["%s" % j])
TypeError: 'AxesSubplot' object does not support indexing
Ich kann nicht sehen, wo dieser Fehler kommt, wenn die erste Handlung ist, produziert feinen, warum der oder die zweite Figur ist entstanden?
Vielen Dank für jede Einsicht
InformationsquelleAutor der Frage Ashleigh Clayton | 2013-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Grundstück mehrere Nebenhandlungen, die
plt.subplots()
gibt die Achsen in ein array, dieses array ermöglicht die Indizierung, wie Sie mitax[plot]
. Wenn nur 1 Nebenhandlung angelegt ist, standardmäßig gibt es die Achsen selbst, nicht die Achsen in einem array.So Ihre Fehler tritt auf, wenn
len(channels)
gleich 1 ist. Sie unterdrücken kann dieses Verhalten durch das setzensqueeze=False
im.subplots()
Befehl. Dies zwingt ihn immer wieder ein 'Rows x Cols' Größe array mit den Achsen, auch wenn es ein einziges.Also:
Indem die
squeeze
Schlüsselwort bekommen Sie immer ein 2D-array zurück, so dass die Indizierung für eine Nebenhandlung änderungenax[plot,0]
. Ich habe auch ausdrücklich Hinzugefügt, die Anzahl der Spalten (1 in diesem Fall).InformationsquelleAutor der Antwort Rutger Kassies