Ich habe hier geschrieben, wie man die kumulative Verhältnislinie auf "pyplot.hist ()" überlagert. Dieses Mal werde ich das kumulative Verhältnis auf mehrere Histogramme legen, die mit seaborn.FacetGrid ()
erstellt wurden. Unten ist das fertige Grundstück.
Was Sie tun, ist dasselbe wie hier, aber wenn Sie ein Histogramm mit seaborn.FacetGrid ()
oder seaborn.distplot ()
zeichnen , pyplot.hist ()
empfängt keine expliziten Bin- und Frequenzinformationen als Rückgabewert. Daher werden die Bin- und Frequenzinformationen aus dem "ax" -Objekt extrahiert. Insbesondere werden die erforderlichen Informationen aus dem in "ax" enthaltenen "Patches" -Objekt abgerufen. Der Basiscode ist unten
"""Überlagern Sie die Linie des kumulativen Verhältnisses im FacetGrid-Histogramm"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# % matplotlib inline
sns.set(style="darkgrid", palette="muted", color_codes=True)
#Generierung von Spielzeugdaten
np.random.seed(0)
size = 200
x1 = np.random.normal(size=size)
group = np.random.choice((0, 1), size=size)
df = pd.DataFrame({'x1': x1, 'group': group})
# seaborn.FacetGrid()Generieren Sie mehrere Histogramme mit
g = sns.FacetGrid(data=df, col='group', hue='group', size=5)
g = g.map(plt.hist, 'x1', alpha=0.7, label='Frequency')
#Zeichnen Sie eine kumulative Linie für alle in FacetGrid enthaltenen Axt
for ax in g.axes.ravel():
#Patches extrahieren
patches = ax.patches
#Berechnen Sie den Wert der 2. Achse (x)
bins_part = [patch.get_xy()[0] + patch.get_width() for patch in patches]
bins = [patches[0].get_xy()[0]] + bins_part
x2 = np.convolve(bins, np.ones(2) / 2, mode="same")[1:]
#Berechnen Sie den Wert der 2. Achse (y:Akkumulation)
n = [patch.get_height() for patch in patches]
y2 = np.add.accumulate(n) / sum(n)
#Diagramm der 2. Achse
ax2 = ax.twinx()
ax2.plot(x2, y2, ls='--', marker='o', color='r',
label='Cumulative ratio')
ax2.grid(visible=False)
plt.tight_layout()
plt.show()
Der vollständige Code, einschließlich der Legende, befindet sich in Gist. Bitte gehen Sie zu hier.
Recommended Posts