Wie center-Etiketten im Histogramm-plot
Habe ich ein numpy-array results
, das aussieht wie
[ 0. 2. 0. 0. 0. 0. 3. 0. 0. 0. 0. 0. 0. 0. 0. 2. 0. 0.
0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.
0. 1. 1. 0. 0. 0. 0. 2. 0. 3. 1. 0. 0. 2. 2. 0. 0. 0.
0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 2. 0. 0. 0. 0.
0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3. 1. 0. 0. 0. 0. 0.
0. 0. 0. 1. 0. 0. 0. 1. 2. 2.]
Ich möchte plot eines Histogramms der es. Ich habe versucht
import matplotlib.pyplot as plt
plt.hist(results, bins=range(5))
plt.show()
Gibt mir ein Histogramm mit der x-Achse gekennzeichnet 0.0 0.5 1.0 1.5 2.0 2.5 3.0. 3.5 4.0
.
Ich möchte die x-Achse beschriftet werden soll 0 1 2 3 statt mit den labels in der Mitte der einzelnen Balken. Wie Sie das tun können?
- Im nicht sicher, was Sie wollen. Wollen Sie den Behälter zentriert um 1,2,3 (so um die integer statt der 1.5, 2.5-Werte). Oder wollen Sie für die Beschriftung der Balken mit text oder so? Denn wenn, führe ich Ihren Befehl, meine Ausgabe ist
(array([ 4., 5., 1., 2.]), array([0, 1, 2, 3, 4])
(mit unterschiedlichen Eingabewerten). Also hab ich mir verschiedene Behälter, oder vermisse ich etwas? - Der erste Balken ist die Anzahl der 0EN in
results
, die zweite die zahlen von 1s (gibt es elf davon), der Dritte die Anzahl der 2s (es gibt acht) und die Letzte ist die Anzahl der 3s - (es gibt drei davon). Ich möchte die Anzahl0
als ein label, unter der Mitte der ersten bar, die Nummer1
als ein label, unter der Mitte des zweiten und so weiter. Ist das klarer? - So gibt es keine Probleme mit der Gruppierung, die Sie gerade hinzufügen möchten Etiketten auf die Behälter?
- Ja, ich möchte, um loszuwerden, der Standard-Etiketten und fügen Sie die, die ich beschrieben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende alternative Lösung ist kompatibel mit
plt.hist()
(und das hat den Vorteil, zum Beispiel, dass man das so nennen kann nach einerpandas.DataFrame.hist()
.(Die Letzte Zeile ist nicht ausdrücklich angeforderter durch die OP, aber es macht die Ausgabe schöner)
Diese können verwendet werden, wie in:
range(5)
?range(5)
. Seltsam, ich weiß, aber die einzige alternative, die ich sehe (Zentrierung bin ich von der i-1/2 i+1/2) wäre komplizierter.bins = np.arange(2, 7, .5)
Die anderen Antworten einfach nicht tun es für mich. Der Vorteil der Verwendung von
plt.bar
überplt.hist
ist, dass bar könnenalign='center'
:können Sie bauen eine
bar
plot aus einemnp.histogram
.Betrachten Sie diese
EDIT:, um die bars einander berühren, hat man das Spiel mit dem parameter "Breite".
xticks
arbeiten. Vielen Dank für die Klarstellungnp.arange(1, 101).astype(str)
oder ohne numpy:map(str, range(1, 101))