Ich zeichne ein paar gestapelte Histogramme mit dem folgenden Code. Ich verwende für beide die gleichen Behälterkanten, damit sie gut ausgerichtet sind.
Wie kann ich diese in derselben Tabelle anzeigen lassen? Das heißt, ein grün / roter und ein blau / orange Balken pro Behälter - nebeneinander.
Ich habe viele Fragen und Antworten gesehen, die denen this <ähneln / a> schlägt vor, ein Balkendiagramm zu verwenden und die Breite der Balken zu berechnen, aber dies scheint etwas zu sein, das zumindest in matplotlib sofort unterstützt werden sollte.
Kann ich gestapelte Histogramme auch direkt mit Seaborn zeichnen? Ich konnte keinen Weg finden.
plt.hist( [correct_a, incorrect_a], bins=edges, stacked=True, color=['green', 'red'], rwidth=0.95, alpha=0.5)
plt.hist( [correct_b, incorrect_b], bins=edges, stacked=True, color=['green', 'red'], rwidth=0.95, alpha=0.5)
2 Antworten
Nun, ich denke, plt.bar
ist Ihre beste Wahl hier. Um gestapelte Histogramme zu erstellen, können Sie das Argument bottom
verwenden. Um zwei Balkendiagramme nebeneinander anzuzeigen, können Sie die x
-Werte um einige width
verschieben, genau wie in dieses Original-Matplotlib-Beispiel:
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(16, 8))
correct_a = np.random.randint(0, 20, 20)
incorrect_a = np.random.randint(0, 20, 20)
correct_b = np.random.randint(0, 20, 20)
incorrect_b = np.random.randint(0, 20, 20)
edges = len(correct_a)
width=0.35
rects1 = ax.bar(np.arange(edges), incorrect_a, width, color="red", label="incorrect_a")
rects2 = ax.bar(np.arange(edges), correct_a, width, bottom=incorrect_a, color='seagreen', label="correct_a")
rects3 = ax.bar(np.arange(edges) + width, incorrect_b, width, color="blue", label="incorrect_b")
rects4 = ax.bar(np.arange(edges) + width, correct_b, width, bottom=incorrect_b, color='orange', label="correct_b")
# placing the ticks to the middle
ticks_aligned = np.arange(edges) + width // 2
ax.set_xticks(np.arange(edges) + width / 2)
ax.set_xticklabels((str(tick) for tick in ticks_aligned))
ax.legend()
Dies ergibt:
Hier ist ein einfaches Beispiel (Histogramme sind nicht gestapelt) für 2 Histogramme, die zusammen angezeigt werden, wobei jeder Behälter neben jedem einen eigenen Platz hat:
# generating some data for this example:
a = [1,2,3,4,3,4,2,3,4,5,4,3,4,5,4,1,2,3,2,1,3,4,5,6,7,6,5,4,3,4,6,5,4,3,4]
b = [1,2,3,4,5,6,7,6,5,6,7,6,5,4,3,4,5,6,7,6,7,6,7,5,4,3,2,1,3,4,5,6,5,6,5,6,7,6,7]
# plotting 2 histograms with bars centered differently within each bin:
plt.hist(a, bins=5, align='left', rwidth=0.5)
plt.hist(b, bins=5, align='mid', rwidth=0.5, color='r')
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.