[PYTHON] [Dessin graphique] J'ai essayé d'écrire un graphique à barres multi-séries avec matplotlib et seaborn

introduction

J'ai comparé le dessin de graphiques à barres multi-séries avec matplotlib et seaborn.

En conclusion, c'est un article qui ** seaborn est pratique **

--Environnement

Graphique à dessiner

Le côté gauche est matplotlib et le côté droit est marin. C'est la même chose que de regarder les graphiques, mais seaborn est facile jusqu'à ce que vous les dessiniez. La couleur du bâton est la même, mais Seaborn est un peu plus clair. Peut-être qu'il y a un décor quelque part comme celui-ci ... グラフを描画してみた.png

Flux de dessin

C'est un flux jusqu'à ce que le graphique à barres ci-dessus soit dessiné.

Installer la bibliothèque

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from io import StringIO
import numpy as np
%matplotlib inline

Créer un DataFrame

data = ('Nombre de personnes,sexe,âge\n'
       '58,Masculin,18 ans\n'
       '25,Masculin,19 ans\n'
       '42,Masculin,20 ans\n'
       '60,Femme,18 ans\n'
       '42,Femme,19 ans\n'
       '70,Femme,20 ans\n' 
       )
df = pd.read_csv(StringIO(data), dtype={'Nombre de personnes':'int32'})
print(df)

Nombre de personnes sexe âge
58 Masculin 18 ans
25 Masculin 19 ans
42 Masculin 20 ans
60 Femme 18 ans
42 Femme 19 ans
70 Femme 20 ans

Dessinez un graphique

plt.rcParams['font.family'] = 'Yu Gothic' #Évitez les caractères japonais brouillés avec Yu Gothic comme paramètre par défaut
plt.rcParams['font.size'] = 20 #Définir la taille de police par défaut

fig,ax = plt.subplots(1, 2, figsize=(24,10)) #Créez un espace de dessin de 24 pouces de large et 10 pouces de haut avec 1 rangée et 2 colonnes


#Le dessin d'un graphique à barres avec matplotlib divise un peu les données df
labels = list(df['âge'].unique()) #Lister les emplacements correspondant aux étiquettes de l'axe X de df
number_male = list(df['Nombre de personnes'].loc[0:2]) #dfの上から3行のNombre de personnesの数値(男性の数値)をリスト化
number_female = list(df['Nombre de personnes'].loc[3:5]) #dfの下から3行のNombre de personnesの数値(女性の数値)をリスト化
left = np.arange(len(number_male)) #Pour spécifier les coordonnées pour coller l'étiquette de l'axe X
print(left) #Le contenu de gauche[0 1 2]
width = 0.4 #Dans le cas d'un graphe multi-séries, si les coordonnées de l'étiquette de l'axe X sont seulement à gauche, il se déplacera, donc le montant de la correction


#Graphique à barres avec matplotlib
ax[0].bar(x=left, height=number_male, width=width, align='center', color='royalblue') #Ajout d'un graphique à barres pour la partie masculine
ax[0].bar(x=left+width, height=number_female, width=width, align='center', color='tomato') #Ajout d'un graphique à barres pour la partie féminine
ax[0].set_xticks(left + width / 2) #Précisez la position de l'axe des 18 ans, 19 ans, 20 ans
ax[0].set_xticklabels(labels=labels) #"18 ans, 19 ans, 20 ans"Spécifié pour dessiner
ax[0].set_xlabel('âge') #Étiquette de l'axe X
ax[0].set_ylabel('Nombre de personnes') #Étiquette de l'axe Y
ax[0].legend(list(df['sexe'].unique()), title='sexe', loc='upper right') #凡例の男性、女性、タイトルをsexe、位置を右上へ設定
ax[0].set_title('Graphique à barres avec matplotlib', size=30) #Définir le titre


#Graphique à barres avec seaborn
sns.barplot(data=df, x='âge', y='Nombre de personnes', hue='sexe', ax=ax[1], palette={'Masculin':'royalblue','Femme':'tomato'}) #data=Spécifiez df, définissez X et Y, teinte='sexe'とすることでsexe別で分けてくれる
ax[1].legend(loc='upper right', title='sexe') #Définissez le titre et la position de la légende en haut à droite
ax[1].set_title('Graphique à barres avec seaborn', size=30) #Définir le titre


plt.savefig('J'ai essayé de dessiner un graphique.png', bbox_inches='tight', pad_inches=0.3) #Enregistrer l'image dessinée
plt.show() #dessin

Cela dessinera le graphique à barres (#Drawing Graph).

Nombre de lignes
matplotlib 8
seaborn 3

Seaborn est plus facile à dessiner car vous pouvez le voir! Le code comporte deux lignes, une légende et un titre, vous pouvez donc dessiner plusieurs séries de graphiques à barres avec une seule ligne.

Recommended Posts

[Dessin graphique] J'ai essayé d'écrire un graphique à barres multi-séries avec matplotlib et seaborn
J'ai créé un graphique à barres empilées avec matplotlib de Python et ajouté une étiquette de données
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de créer des taureaux et des vaches avec un programme shell
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
(Matplotlib) Je veux dessiner un graphique avec une taille spécifiée en pixels
Je souhaite afficher plusieurs images avec matplotlib.
Je veux écrire dans un fichier avec Python
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
Je veux écrire un élément dans un fichier avec numpy et le vérifier.
Créez un graphique empilé correspondant aux directions positives et négatives avec matplotlib
J'ai essayé de créer une API de reconnaissance d'image simple avec Fast API et Tensorflow
J'ai essayé de créer un modèle avec l'exemple d'Amazon SageMaker Autopilot
Je voulais connaître le nombre de lignes dans plusieurs fichiers et j'ai essayé de l'obtenir avec une commande
J'ai essayé d'extraire des fonctionnalités avec SIFT d'OpenCV
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2 2
J'ai essayé de résumer comment utiliser matplotlib de python
[Python] Comment dessiner un graphique linéaire avec Matplotlib
J'ai essayé d'implémenter et d'apprendre DCGAN avec PyTorch
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2
J'ai essayé d'implémenter Grad-CAM avec keras et tensorflow
J'ai essayé de trouver la classe alternative avec tensorflow
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de notifier la mise à jour de "Devenir romancier" en utilisant "IFTTT" et "Devenir un romancier API"
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
[Python] J'ai essayé de créer automatiquement un rapport quotidien de YWT avec la messagerie Outlook
Traitement d'image avec Python (j'ai essayé de le binariser en art mosaïque 0 et 1)
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
J'ai essayé d'implémenter une ligne moyenne mobile de volume avec Quantx
J'ai essayé de prédire et de soumettre les survivants du Titanic avec Kaggle
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de publier automatiquement sur ChatWork au moment du déploiement avec Fabric et ChatWork Api
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
J'ai essayé de résoudre le problème de F02 comment écrire en temps réel hors ligne avec Python
J'ai créé un package pour filtrer les séries chronologiques avec python
Méthode de dessin graphique avec matplotlib
J'ai essayé de résoudre le problème d'optimisation des combinaisons avec Qiskit
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
J'ai essayé de commencer avec Hy ・ Définir une classe
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python
J'ai essayé d'écrire dans un modèle de langage profondément appris
Comment tracer beaucoup de légendes en changeant la couleur du graphique en continu avec matplotlib
Lors de la génération d'un grand nombre de graphiques avec matplotlib, je ne souhaite pas afficher le graphique à l'écran (environnement jupyter)
J'ai essayé de déverrouiller l'entrée 2 lock sésame d'une simple pression sur le bouton AWS IoT
Je veux créer un graphique avec des lignes ondulées au milieu avec matplotlib (je veux manipuler l'impression)
[Python] J'ai essayé de visualiser le prix en argent de "ONE PIECE" plus de 100 millions de caractères avec matplotlib.
J'ai essayé de prédire le nombre de personnes infectées au niveau national de la nouvelle corona avec un modèle mathématique
[Introduction à Data Scientist] Bases du calcul scientifique, du traitement des données et comment utiliser la bibliothèque de dessin de graphes ♬ Bases de Matplotlib
J'ai essayé d'intégrer un réseau d'interaction protéine-protéine dans un espace à deux voies avec Poincarē embarquant de gensim