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.
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.
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()
↓ 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()
Recommended Posts