Plot eine bar mit matplotlib eine Wörterbuch

Gibt es eine Möglichkeit, zeichnen ein bar-plot mit matplotlib mit Daten direkt aus einem dict?

Mein dict wie folgt aussieht:

D = {u'Label1':26, u'Label2': 17, u'Label3':30}

Ich hatte erwartet,

fig = plt.figure(figsize=(5.5,3),dpi=300)
ax = fig.add_subplot(111)
bar = ax.bar(D,range(1,len(D)+1,1),0.5)

arbeiten, aber es funktioniert nicht.

Hier ist der Fehler:

>>> ax.bar(D,range(1,len(D)+1,1),0.5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line 4904, in bar
    self.add_patch(r)
  File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line 1570, in add_patch
    self._update_patch_limits(p)
  File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line 1588, in _update_patch_limits
    xys = patch.get_patch_transform().transform(vertices)
  File "/usr/local/lib/python2.7/site-packages/matplotlib/patches.py", line 580, in get_patch_transform
    self._update_patch_transform()
  File "/usr/local/lib/python2.7/site-packages/matplotlib/patches.py", line 576, in _update_patch_transform
    bbox = transforms.Bbox.from_bounds(x, y, width, height)
  File "/usr/local/lib/python2.7/site-packages/matplotlib/transforms.py", line 786, in from_bounds
    return Bbox.from_extents(x0, y0, x0 + width, y0 + height)
TypeError: coercing to Unicode: need string or buffer, float found
  • Kannst du uns erzählen, was genau nicht funktioniert? Bekommen Sie eine Ausnahme? Was Ausnahme? Teilen Sie so viele Informationen wie möglich.
  • sorry, ich habe aktualisiert die Frage mit der Fehlermeldung zeigt es... etwas über string oder buffer... ich verstehe nicht diese Fehlermeldung.
  • Es ist nicht klar, was Sie erreichen wollen, aber in ax.bar(D,range(1,len(D)+1,1),0.5) ersten argument eine Liste von zahlen, in Ihrem Fall D.values().
  • Ich weiß, es kann nicht funktionieren... aber was ich versuchte zu tun ist, um nur plot bar chart mit einer Linie, so dass Sie die Zeichenfolgen und Werte auf einmal. Ich hart, vielleicht gibt es eine Möglichkeit zum hinzufügen von Daten und Beschriftungen in der gleichen Zeit... aber D.values() war auch neu für mich und es ist ziemlich cool.
  • Ein one-liner ist nicht möglich, zumindest meines Wissens.
  • Möchten Sie vielleicht zum senden eines feature-request auf der github-Website, weil es nicht nützlich erscheinen.
  • Nützlich oder nicht, es scheint "natürlich" 🙂

InformationsquelleAutor otmezger | 2013-04-15
Schreibe einen Kommentar