Comment unifier la largeur du bac lors de l'affichage de plusieurs histogrammes les uns sur les autres (matplotlib)

Contexte

Lors de l'affichage de plusieurs histogrammes de manière superposée à l'aide de la boucle for, la largeur diffère pour chaque donnée et il était difficile de comparer à moins que la largeur de la corbeille ne soit spécifiée.J'ai donc étudié comment afficher la largeur de la corbeille de manière unifiée.

Importer / utiliser un ensemble de données

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_wine

wine = load_wine()
df_wine = pd.DataFrame(data=wine.data, columns=wine.feature_names)
df_wine['target'] = wine.target

Utilisez le jeu de données scikit-learn wine. J'ai mis une étiquette indiquant le type de vin dans la colonne appelée cible.

Méthode

Si vous passez une liste à bins, qui est un argument de plt.hist (), un histogramme sera dessiné avec les valeurs spécifiées dans la liste comme délimiteurs d'intervalle. (Si bins = [0,1,2,3,4], quatre sections de 0 à 1, 1 à 2, 2 à 3, 3 à 4 seront dessinées.)

En utilisant ceci, créez une liste avec np.linspace (valeur minimale, valeur maximale, nombre que vous voulez séparer) et passez-la comme argument deplt.hist ()pour chaque étiquette pour spécifier un bac commun. Faire.

↓ largeur du bac non ajustée

feature_name = 'hue'
target_names = df_wine['target'].unique()

for target in target_names:
    plt.hist(df_wine[df_wine.target == target][feature_name], alpha=0.6, label=target)

plt.title(feature_name)
plt.legend()

raw_hist.png

↓ réglage de la largeur du bac disponible

feature_name = 'hue'
target_names = df_wine['target'].unique()

#N entre les valeurs maximale et minimale_Configurer pour afficher les barres de l'histogramme avec la largeur du bac divisé également (unifier la largeur du bac de chaque cible)
n_bin = 15
x_max = df_wine[feature_name].max()
x_min = df_wine[feature_name].min()
bins = np.linspace(x_min, x_max, n_bin)

for target in target_names:
    plt.hist(df_wine[df_wine.target == target][feature_name], bins=bins, alpha=0.6, label=target)

plt.title(feature_name)
plt.legend()

bin_adjusted_hist.png

Articles référencés

Ajustez la largeur de la corbeille rapidement et proprement avec l'histogramme de matplotlib et seaborn --Qiita

Recommended Posts

Comment unifier la largeur du bac lors de l'affichage de plusieurs histogrammes les uns sur les autres (matplotlib)
Précautions lors de la superposition de la fonction de densité de probabilité et de l'histogramme dans matplotlib
Une histoire que j'ai eu du mal à afficher des graphiques les uns sur les autres avec matplotlib
Comment attribuer plusieurs valeurs à la barre de couleurs Matplotlib
Comment envoyer des fichiers d'un seul coup en se connectant à un hôte de l'autre côté de la plate-forme avec SCP en plusieurs étapes
[EC2] Comment installer Chrome et le contenu de chaque commande
Comment utiliser Jupyter sur le frontal de Spacon ITO
Comment mettre à jour la version Python de Cloud Shell dans GCP
Comment exécuter matplotlib sur heroku
[Python] Comment spécifier la position d'affichage de la fenêtre et la taille de matplotlib
Ajustez la largeur du bac de manière nette et précise avec l'histogramme de matplotlib et seaborn
Comprendre comment afficher des images sur Jupyter (utilisation de imshow / matplotlib d'OpenCV)
Comment résoudre le problème que seul le processus reste lorsque vous appuyez sur X sur l'écran imshow d'OpenCV
Comment titrer plusieurs figures avec matplotlib
Comment résoudre le problème d'emballage du bac
Comment créer un environnement pour utiliser plusieurs versions de Python sur un Mac
Liste de contrôle pour éviter de transformer les éléments de array of numpy avec for
Comment ajouter un traitement de pré-sauvegarde lors de l'ajout d'un objet sur le site d'administration de Django
Comment rendre la largeur de police du notebook jupyter mis dans pyenv égale
[Flask + Keras] Comment déduire plusieurs modèles à grande vitesse sur le serveur