Beim Zeichnen eines gestapelten Balkendiagramms in Python wünschte ich mir, ich könnte die Datenbeschriftung wie Excel anzeigen, und als ich sie nachschlug, gab es keinen Artikel, in dem die Datenbeschriftung angezeigt werden konnte, und keinen Code, den ich kopieren und einfügen konnte. Also habe ich einen Code geschrieben, den ich kopieren und einfügen kann, wenn ich eine Datenbeschriftung in das gestapelte Balkendiagramm einfügen möchte.
Übrigens, wenn Sie nur ein gestapeltes Balkendiagramm zeichnen müssen, lesen Sie bitte ** Einfaches Zeichnen eines gestapelten Balkendiagramms ** am Ende dieser Seite.
Importieren Sie die folgenden Bibliotheken.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(font='IPAexGothic')
%matplotlib inline
Dummy-Daten erstellten monatliche Verkaufsdaten für A-, B- und C-Filialen.
dataset = pd.DataFrame([[100, 200, 50], [300, 400, 600], [50, 300, 60]],
columns=['Zweig A.', 'B Zweig', 'C Zweig'],
index=['April', 'Kann', 'Juni'])
Zweig A. | B Zweig | C Zweig | |
---|---|---|---|
April | 100 | 200 | 50 |
Kann | 300 | 400 | 600 |
Juni | 50 | 300 | 60 |
Zeichnen wir zunächst ein einfaches Balkendiagramm. Zeichnen wir ein Balkendiagramm, das den monatlichen Umsatz jeder Filiale summiert. Es ist gut zu zeichnen, aber allein damit weiß ich nicht, wie viel Umsatz jeden Monat ist. .. .. Verwenden wir in einem solchen Fall ein gestapeltes Balkendiagramm!
fig, ax = plt.subplots(figsize=(10, 8))
ax.bar(dataset.columns, dataset.sum())
plt.show()
Gestapelte Balkendiagramme verwenden "ax.bar ()" auf dieselbe Weise wie beim Zeichnen von Balkendiagrammen. Geben Sie im Argument "bottom" zu diesem Zeitpunkt die y-Koordinate an, die die Basis des Balkens bildet. Sie haben jetzt ein gestapeltes Balkendiagramm! !! !! Immerhin möchte ich ein Datenetikett. Referenzseite: https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.axes.Axes.bar.html
fig, ax = plt.subplots(figsize=(10, 8))
for i in range(len(dataset)):
ax.bar(dataset.columns, dataset.iloc[i], bottom=dataset.iloc[:i].sum())
ax.set(xlabel='Zweigname', ylabel='Der Umsatz')
ax.legend(dataset.index)
plt.show()
Das Hauptthema ist endlich von hier.
Die Datenbezeichnung wird eingefügt, indem die x- und y-Koordinaten mit plt.text ()
angegeben werden.
Dann habe ich ein gutes Gefühl!
fig, ax = plt.subplots(figsize=(10, 8))
for i in range(len(dataset)):
ax.bar(dataset.columns, dataset.iloc[i], bottom=dataset.iloc[:i].sum())
for j in range(len(dataset.columns)):
plt.text(x=j,
y=dataset.iloc[:i, j].sum() + (dataset.iloc[i, j] / 2),
s=dataset.iloc[i, j],
ha='center',
va='bottom'
)
ax.set(xlabel='Zweigname', ylabel='Der Umsatz')
ax.legend(dataset.index)
plt.show()
Wenn Sie ein gestapeltes Balkendiagramm verwenden, möchten Sie auch ein zu 100% gestapeltes Balkendiagramm verwenden. Verarbeiten Sie zunächst die Daten. Der folgende Code wandelt Verkäufe nach Filialen in Prozent um.
plot_dataset = pd.DataFrame(index = dataset.index)
for col in dataset.columns:
plot_dataset[col] = round(100 * dataset[col] / dataset[col].sum(), 1)
Zweig A. | B Zweig | C Zweig | |
---|---|---|---|
April | 22.2 | 22.2 | 7.0 |
Kann | 66.7 | 444. | 84.5 |
Juni | 11.1 | 33.3 | 8.5 |
Zeichnen Sie mit den konvertierten Daten ein zu 100% gestapeltes Balkendiagramm. Der Code ist der gleiche wie der vorherige Code. (Nur Variablen werden geändert.)
fig, ax = plt.subplots(figsize=(10, 8))
for i in range(len(plot_dataset)):
ax.bar(plot_dataset.columns,
plot_dataset.iloc[i],
bottom=plot_dataset.iloc[:i].sum()
)
for j in range(len(plot_dataset.columns)):
plt.text(x=j,
y=plot_dataset.iloc[:i, j].sum()+(plot_dataset.iloc[i, j]/2),
s=f'{plot_dataset.iloc[i, j]}%',
ha='center',
va='bottom'
)
ax.set(xlabel='Zweigname', ylabel='Der Umsatz')
ax.legend(plot_dataset.index)
plt.show()
Wenn Sie nur ein gestapeltes Balkendiagramm zeichnen möchten, können Sie es einfach mit dem folgenden Code zeichnen.
fig, ax = plt.subplots(figsize=(10, 8))
dataset.T.plot(kind='bar', stacked=True, ax=ax)
plt.show()
Recommended Posts