ich bastel momentan einige Diagramme mit matplotlib und das funktioniert eigentlich auch ganz gut (wenn man mal einigermaßen durchgestiegen ist).
Jetzt habe ich aber einige Probleme mit den Balkendiagrammen. An Doku finde ich nicht sehr viel dazu. Mein Problem: Ich habe sieben Balken pro Spalte auf der X-Achse. Jeder der sieben Balken hat eine eigene Farbe. Gezeichnet wird das ganze dann auch korrekt. Aber die Farben in der Legende sind falsch: Ich habe da sechs mal die Farbe des ersten Balkens ein einmal die Farbe des zweiten . Entweder ich mache was falsch, oder da steckt ein Bug drin. Male ich das gleiche als Liniendiagramm, dann stimmt die Legende.
Hier mein Code:
Code: Alles auswählen
from itertools import cycle
from matplotlib.pylab import show, figure
from matplotlib.figure import SubplotParams
COLORS = ['#990000', '#CC0000', '#FF3300',
'#FF6600', '#FF9900', '#FFCC00', '#FFFF33',]
LABELS = ('Montag', 'Dienstag', 'Mittwoch', 'Donnerstag',
'Freitag', 'Samstag', 'Sonntag',)
BAR_WIDTH = 6
color_pool = cycle(COLORS)
x_data = [50, 100, 150, 200, 250, 300]
y_data = [
[325, 679, 591, 703, 744, 670],
[313, 711, 709, 481, 878, 743],
[377, 729, 686, 386, 1022, 783],
[401, 687, 708, 576, 1006, 406],
[379, 516, 647, 610, 624, 770],
[138, 125, 104, 174, 142, 172],
[93, 173, 71, 130, 182, 140],
]
fig = figure()
fig.subplotpars = SubplotParams(right=.7) # keep space for legend
plot = fig.add_subplot(111)
entries = list()
for i, y in enumerate(y_data):
adjusted_x = map(lambda v: (v + i * BAR_WIDTH), x_data)
entry = plot.bar(adjusted_x, y, width=BAR_WIDTH, color=color_pool.next())
#entry = plot.plot(adjusted_x, y,
# linewidth=BAR_WIDTH, color=color_pool.next())
entries.append(entry)
fig.legend(entries, LABELS, 'center right')
show()
Gruß,
Manuel