Boxplots plotten mit Matplotlib funktioniert nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
E1986
User
Beiträge: 19
Registriert: Samstag 3. Mai 2014, 17:43

Hi. Ich habe durch einige Schritte aus Daten mehrerer csv-files folgenden Output ("data_to_plot"):
(dabei handelt es sich um 2 Beispielzeilen, eigentlich sind es noch mehr!)

Code: Alles auswählen

(-36.109999999999999, -21.699999999999999, 0.90000000000000002, 10.0, 88.0)
(-14.199999999999999, -4.5999999999999996, 4.0, 59.5, 3900.0)
Mein Code ist jetzt:

Code: Alles auswählen

fig = plt.figure(1, figsize=(9, 6))

ax = fig.add_subplot(111)

pylab.ylim([-1200,6200])    

plt.boxplot(data_to_plot, whis= 100)        

bp = ax.boxplot(data_to_plot, patch_artist=True)

for box in bp['boxes']:

         box.set( facecolor = 'b' )    

         ax.set_title('Arbeitspreis_Merit_Order (Boxplots)')
         ax.set_xlabel('Kalenderwoche')
         ax.set_ylabel('Arbeitspreis Euro/MWh')
         pylab.xticks((1,2), ['A','B'])

         fig.savefig('fig1.png', bbox_inches='tight')

         plt.show()
Als Ergebnis plottet er nur das Zweite Dataset, an der Stelle, an der der Boxplot des ersten sein müsste (über A). Ich denke, ich muss noch irgendwo eine Schleife einfügen. Hab auch schon viel versucht, aber nicht das entsprechende Resultat hinbekommen.

Bitte, könnte mir jemand helfen?
ACHTUNG: Unter der Zeile "for box in bp['boxes']:" ist alles eingerückt(Schleife!). Das ist also kein Fehler. Ich hab das hier nur nicht hinbekomen!!
Zuletzt geändert von Anonymous am Dienstag 14. Oktober 2014, 08:59, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Es werden alle 5 geplottet. Ich habe Dein Beispiel hier etwas vereinfacht:

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

data_to_plot = np.array([(-36.109999999999999, -21.699999999999999, 0.90000000000000002, 10.0, 88.0),
                         (-14.199999999999999, -4.5999999999999996, 4.0, 59.5, 3900.0)])

plt.figure()
plt.boxplot(data_to_plot, whis= 100)
plt.show()
Die 5. Box ist aber ca 100 mal größer als die anderen vier, deshalb werden die ersten vier Boxen nur als Strich geplottet.

Wenn ich 3900 zu 39 ändere, dann sieht man alle 5 Boxen:

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

data_to_plot = np.array([(-36.109999999999999, -21.699999999999999, 0.90000000000000002, 10.0, 88.0),
                         (-14.199999999999999, -4.5999999999999996, 4.0, 59.5, 39.0)])

plt.figure()
plt.boxplot(data_to_plot, whis= 100)
plt.show()
a fool with a tool is still a fool, www.magben.de, YouTube
Antworten