Ich habe ein Balkendiagramm erstellt. Wie kann ich den Wert des Balkens auf jedem Balken anzeigen?
Aktuelle Handlung:
Was ich versuche zu bekommen:
Mein Code:
import os
import numpy as np
import matplotlib.pyplot as plt
x = [u'INFO', u'CUISINE', u'TYPE_OF_PLACE', u'DRINK', u'PLACE', u'MEAL_TIME', u'DISH', u'NEIGHBOURHOOD']
y = [160, 167, 137, 18, 120, 36, 155, 130]
fig, ax = plt.subplots()
width = 0.75 # the width of the bars
ind = np.arange(len(y)) # the x locations for the groups
ax.barh(ind, y, width, color="blue")
ax.set_yticks(ind+width/2)
ax.set_yticklabels(x, minor=False)
plt.title('title')
plt.xlabel('x')
plt.ylabel('y')
#plt.show()
plt.savefig(os.path.join('test.png'), dpi=300, format='png', bbox_inches='tight') # use format='svg' or 'pdf' for vectorial pictures
python
matplotlib
bar-chart
Franck Dernoncourt
quelle
quelle
plt.text(v, i, " "+str(v), color='blue', va='center', fontweight='bold')
plt.show()
Klausel am Ende setzen. Zum Beispiel:df.plot(); plt.show()
Ich habe festgestellt, dass der API-Beispielcode ein Beispiel für ein Balkendiagramm enthält, wobei der Wert des Balkens auf jedem Balken angezeigt wird:
Ausgabe:
Zu Ihrer Information: Was ist die Höheneinheit, die in "barh" von matplotlib variabel ist? (Ab sofort gibt es keine einfache Möglichkeit, für jeden Balken eine feste Höhe festzulegen.)
quelle
Für alle, die ihr Etikett an der Basis ihrer Balken haben möchten, teilen Sie v einfach durch den Wert des Etiketts wie folgt:
(Hinweis: Ich habe 100 hinzugefügt, es war also nicht ganz unten)
So erhalten Sie ein Ergebnis:
quelle
v == labels[i]
und so könnte die dritte und vierte Zeile einfach sein101, v
?Ich weiß, dass es ein alter Thread ist, aber ich bin mehrmals über Google hier gelandet und denke, dass noch keine Antwort wirklich zufriedenstellend ist. Versuchen Sie es mit einer der folgenden Funktionen:
BEARBEITEN : Da ich einige Likes für diesen alten Thread bekomme, möchte ich auch eine aktualisierte Lösung teilen (im Grunde genommen meine beiden vorherigen Funktionen zusammenfügen und automatisch entscheiden, ob es sich um einen Bar- oder einen Hbar-Plot handelt):
Jetzt können Sie sie für normale Balkendiagramme verwenden:
oder für horizontale Balkendiagramme:
quelle
Verwenden Sie plt.text () , um Text in das Diagramm einzufügen .
Beispiel:
Dies zeigt die Figur als:
Balkendiagramm mit Werten oben
quelle
plt.text(x=index , y =data+1 , s=f"{data}" , fontdict=dict(fontsize=20), va='center')
Für Pandas:
Das ist es. Alternativ für diejenigen, die es vorziehen, eine
apply
Schleife mit Aufzählung zu erstellen:Außerdem erhalten
ax.patches
Sie die Bars, mit denen Sie bekommen würdenax.bar(...)
. Falls Sie die Funktionen von @SaturnFromTitan oder Techniken anderer anwenden möchten.quelle
[ax.text(i, v, '{:.2f}%'.format(100*v)) for i, v in enumerate(s)];
for p in ax.patches: ax.annotate(str(p.get_height()), (p.get_x() * 1.005, p.get_height() * 1.005))
Ich brauchte auch die Balkenbeschriftungen. Beachten Sie, dass meine y-Achse eine vergrößerte Ansicht mit Einschränkungen auf der y-Achse hat. Die Standardberechnungen zum Platzieren der Beschriftungen oben auf der Leiste funktionieren weiterhin mit der Höhe (use_global_coordinate = False im Beispiel). Ich wollte jedoch zeigen, dass die Beschriftungen auch in der gezoomten Ansicht unter Verwendung globaler Koordinaten in matplotlib 3.0.2 am unteren Rand des Diagramms platziert werden können . Hoffe es hilft jemandem.
quelle
Ich habe versucht, dies mit gestapelten Plotleisten zu tun. Der Code, der für mich funktionierte, war.
quelle
Überprüfen Sie diesen Link Matplotlib Gallery So habe ich das Code-Snippet von Autolabel verwendet.
quelle