Bei der überlappenden Anzeige mehrerer Histogramme mit der for-Schleife unterscheidet sich die Breite für die einzelnen Daten, und es war schwierig zu vergleichen, wenn nicht die Behälterbreite angegeben wurde. Daher habe ich untersucht, wie die Behälterbreite auf einheitliche Weise angezeigt werden kann.
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
Verwenden Sie den Scikit-Learn-Wein-Datensatz. Ich habe ein Etikett mit der Art des Weins in die Spalte "Ziel" eingefügt.
Wenn Sie eine Liste an "Bins" übergeben, was ein Argument von "plt.hist ()" ist, wird ein Histogramm mit den in der Liste angegebenen Werten als Intervallunterbrechungen erstellt. (Wenn "Bins = [0,1,2,3,4]", werden die Balken in den vier Abschnitten 0 bis 1, 1 bis 2, 2 bis 3, 3 bis 4 gezeichnet.)
Erstellen Sie damit eine Liste mit "np.linspace" (Minimalwert, Maximalwert, Anzahl, die Sie trennen möchten) und übergeben Sie sie als Argument von "plt.hist ()" für jedes Label, um einen gemeinsamen Bin anzugeben. Machen.
↓ Behälterbreite nicht angepasst
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()
↓ Behälterbreitenverstellung verfügbar
feature_name = 'hue'
target_names = df_wine['target'].unique()
#N zwischen den Maximal- und Minimalwerten_Stellen Sie ein, dass die Balken des Histogramms mit gleichmäßig verteilter Behälterbreite angezeigt werden (vereinheitlichen Sie die Behälterbreite jedes Ziels).
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()