J'ai créé un graphique à barres empilées avec matplotlib de Python et ajouté une étiquette de données

Essayez de dessiner un graphique à barres empilées avec matplotlib

motivation

Lorsque je dessine un graphique à barres empilées en Python, j'aimerais pouvoir afficher l'étiquette de données comme Excel, et lorsque je l'ai recherchée, il n'y avait aucun article qui pouvait afficher l'étiquette de données, et il n'y avait pas de code que je pourrais copier et coller. J'ai donc écrit un code que je peux copier et coller lorsque je veux attacher une étiquette de données au graphique à barres empilées.

Au fait, si vous avez seulement besoin de dessiner un graphique à barres empilées, veuillez vous référer à ** Facile à dessiner un graphique à barres empilées ** à la fin de cette page.

importer

Importez les bibliothèques suivantes.


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

sns.set(font='IPAexGothic')

%matplotlib inline

Créer des données factices

Les données factices ont créé des données de ventes mensuelles pour les succursales A, B et C.


dataset = pd.DataFrame([[100, 200, 50], [300, 400, 600], [50, 300, 60]], 
                       columns=['Branche A', 'Branche B', 'Branche C'], 
                       index=['avril', 'Peut', 'juin'])
Branche A Branche B Branche C
avril 100 200 50
Peut 300 400 600
juin 50 300 60

Dessinez un graphique à barres

Tout d'abord, dessinons un graphique à barres simple. Dessinez un graphique à barres qui totalise les ventes mensuelles de chaque succursale. C'est bien de dessiner, mais avec cela seul, je ne sais pas combien de ventes chaque mois. .. .. Dans un tel cas, utilisons un graphique à barres empilées!

fig, ax = plt.subplots(figsize=(10, 8))
ax.bar(dataset.columns, dataset.sum())
plt.show()

image.png

Dessinez un graphique à barres empilées

Les graphiques à barres empilés utilisent ʻax.bar () `comme ils le font lors de la création de graphiques à barres. Spécifiez la coordonnée y qui est la base de la barre dans l'argument «bottom» à ce moment. Vous avez maintenant un graphique à barres empilées! !! !! Après tout, je veux une étiquette de données. Site de référence: 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='Nom de la filiale', ylabel='Ventes')
ax.legend(dataset.index)
plt.show()

image.png

Afficher les étiquettes de données dans des graphiques à barres empilés

Le sujet principal est enfin d'ici. L'étiquette de données est insérée en spécifiant les coordonnées x et y avec plt.text (). Ensuite, j'ai eu une bonne impression!


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='Nom de la filiale', ylabel='Ventes')
ax.legend(dataset.index)
plt.show()

image.png

Dessinez un graphique à barres empilées à 100%

Lorsque vous utilisez un graphique à barres empilées, vous souhaitez également utiliser un graphique à barres empilées à 100%. Commencez par traiter les données. Le code suivant convertit les ventes par succursale en pourcentages.


plot_dataset = pd.DataFrame(index = dataset.index)
for col in dataset.columns:
    plot_dataset[col] = round(100 * dataset[col] / dataset[col].sum(), 1)
Branche A Branche B Branche C
avril 22.2 22.2 7.0
Peut 66.7 444. 84.5
juin 11.1 33.3 8.5

Dessinez un graphique à barres empilées à 100% en utilisant les données converties. Le code est le même que le code précédent. (Seules les variables sont modifiées.)


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='Nom de la filiale', ylabel='Ventes')
ax.legend(plot_dataset.index)
plt.show()

image.png

Dessinez facilement un graphique à barres empilées

Si vous souhaitez simplement dessiner un graphique à barres empilées, vous pouvez facilement le dessiner avec le code suivant.

fig, ax = plt.subplots(figsize=(10, 8))
dataset.T.plot(kind='bar', stacked=True, ax=ax)
plt.show()

image.png

Recommended Posts

J'ai créé un graphique à barres empilées avec matplotlib de Python et ajouté une étiquette de données
J'ai créé une classe en Python et essayé de taper du canard
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
[Dessin graphique] J'ai essayé d'écrire un graphique à barres multi-séries avec matplotlib et seaborn
Représentez facilement des données graphiques dans le shell et Python
J'ai créé un outil de mot de passe en Python.
(Matplotlib) Je veux dessiner un graphique avec une taille spécifiée en pixels
Lire les données csv Python avec Pandas ⇒ Graphique avec Matplotlib
J'ai écrit une classe en Python3 et Java
Utilisez libsixel pour générer Sixel en Python et générer le graphe Matplotlib vers le terminal.
Créez un graphique empilé correspondant aux directions positives et négatives avec matplotlib
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Je veux travailler avec un robot en python.
J'ai essayé de faire LINE BOT avec Python et Heroku
Exemple de données créées avec python
Graphique des données Excel avec matplotlib (1)
Graphique des données Excel avec matplotlib (2)
Essayez d'exécuter python dans l'environnement Django créé avec pipenv
Étudier les mathématiques avec Python: dessiner un graphe sympy (scipy) avec matplotlib
J'ai fait un jeu de frappe simple avec tkinter de Python
Créons un diagramme PRML avec Python, Numpy et matplotlib.
J'ai fait un jeu de puzzle (comme) avec Tkinter of Python
J'ai écrit python3.4 dans .envrc avec direnv et je l'ai autorisé, mais j'ai eu une erreur de syntaxe
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
Manuel de graphisme Python avec Matplotlib.
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
J'ai ajouté Maki Horikita et Kanna Hashimoto et divisé par 2 avec python
J'ai fait une loterie avec Python.
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
Je veux créer un graphique avec des lignes ondulées au milieu avec matplotlib (je veux manipuler l'impression)
Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
Hashing de données en R et Python
J'ai joué avec PyQt5 et Python3
Heatmap avec dendrogramme en Python + matplotlib
Faisons un graphe avec python! !!
J'ai créé un démon avec Python
Écrire un histogramme empilé avec matplotlib
Utilisons Python pour représenter la fréquence des données binaires contenues dans une trame de données dans un graphique à barres unique.
Calculer l'itinéraire le plus court d'un graphe avec la méthode Dyxtra et Python
Comment envoyer une image visualisée des données créées en Python à Typetalk
J'ai essayé Python! ] Titanic data edition_vol.1 (graphique à barres, diagramme de dispersion, coefficient de corrélation)
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Comment dessiner un graphique à barres qui résume plusieurs séries avec matplotlib
J'ai 0 ans d'expérience en programmation et je défie le traitement des données avec python
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
Joindre les données avec la clé principale (obligatoire) et la sous-clé (facultative) dans les pandas Python
Créez un environnement Python 3 avec pyenv sur Mac et affichez des graphiques Network X
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (4. Structure des données)
Obtenez des données supplémentaires vers LDAP avec python
Construction de pipeline de données avec Python et Luigi
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
[Python] Définissez la plage du graphique avec matplotlib
J'ai fait un programme de gestion de la paie en Python!
Essayez de travailler avec des données binaires en Python
J'ai fait un compteur de caractères avec Python
J'ai dessiné une carte thermique avec Seaborn [Python]
Un mémo contenant Python2.7 et Python3 dans CentOS
Créé un voyage de fléchettes avec python (news)