[PYTHON] So vereinheitlichen Sie die Behälterbreite, wenn mehrere Histogramme übereinander angezeigt werden (matplotlib)

Hintergrund

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.

Datensatz importieren / verwenden

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.

Methode

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()

raw_hist.png

↓ 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()

bin_adjusted_hist.png

Artikel, auf die verwiesen wird

Passen Sie die Behälterbreite schnell und sauber mit dem Histogramm von Matplotlib und Seaborn - Qiita an

Recommended Posts

So vereinheitlichen Sie die Behälterbreite, wenn mehrere Histogramme übereinander angezeigt werden (matplotlib)
Vorsichtsmaßnahmen bei der Überlagerung der Wahrscheinlichkeitsdichtefunktion und des Histogramms in matplotlib
Eine Geschichte, bei der es mir schwer fiel, Grafiken mit matplotlib anzuzeigen
So weisen Sie der Matplotlib-Farbleiste mehrere Werte zu
So senden Sie Dateien auf einmal, indem Sie mit SCP in mehreren Schritten eine Verbindung zu einem Host auf der anderen Seite der Plattform herstellen
[EC2] So installieren Sie Chrome und den Inhalt jedes Befehls
Verwendung von Jupyter am Frontend von Spacon ITO
So aktualisieren Sie die Python-Version von Cloud Shell in GCP
Wie man Matplotlib auf Heroku ausführt
[Python] So legen Sie die Position und Größe der Fensteranzeige von matplotlib fest
Stellen Sie die Behälterbreite mit dem Histogramm von Matplotlib und Seaborn klar und ordentlich ein
Verstehen, wie Bilder auf Jupyter angezeigt werden (Verwendung von imshow / matplotlib von OpenCV)
So lösen Sie das Problem, dass nur der Prozess übrig bleibt, wenn Sie auf dem Imshow-Bildschirm von OpenCV auf Kreuz drücken
Wie man mit matplotlib mehrere Figuren betitelt
So lösen Sie das Problem beim Verpacken des Behälters
So erstellen Sie eine Umgebung für die Verwendung mehrerer Python-Versionen auf einem Mac
Checkliste, wie Sie vermeiden können, die Elemente des Numpy-Arrays mit for zu drehen
Hinzufügen einer Pre-Save-Verarbeitung beim Hinzufügen eines Objekts auf der Django-Verwaltungssite
So stellen Sie die Schriftbreite des in pyenv eingegebenen Jupyter-Notizbuchs gleich
[Flask + Keras] So schließen Sie mehrere Modelle mit hoher Geschwindigkeit auf dem Server ab