Ich habe einen Pandas Datenrahmen namens clean
, der eine Spalte v
enthält, für die ich ein Histogramm zeichnen und ein Dichtediagramm überlagern möchte. Ich weiß, dass ich eine unter dem anderen auf diese Weise zeichnen können:Überlagerung von Histogramm und Dichte in Pandas/Matplotlib in Python
import pandas as pd
import matplotlib.pyplot as plt
Maxv=200
plt.subplot(211)
plt.hist(clean['v'],bins=40, range=(0, Maxv), color='g')
plt.ylabel("Number")
plt.subplot(212)
ax=clean['v'].plot(kind='density')
ax.set_xlim(0, Maxv)
plt.xlabel("Orbital velocity (km/s)")
ax.get_yaxis().set_visible(False)
Aber wenn ich versuche zu überlagern, y Waage entspricht nicht (und ich verlieren y-Achse Zecken und Etiketten):
yhist, xhist, _hist = plt.hist(clean['v'],bins=40, range=(0, Maxv), color='g')
plt.ylabel("Number")
ax=clean['v'].plot(kind='density') #I would like to insert here a normalization to max(yhist)/max(ax)
ax.set_xlim(0, Maxv)
plt.xlabel("Orbital velocity (km/s)")
ax.get_yaxis().set_visible(False)
Einige Hinweis? (Zusätzliche Frage: Wie kann ich die Breite der Dichteglättungs ändern?)
[diese Antwort sollte helfen] (http://stackoverflow.com/a/39987117/2336654) – piRSquared
Ja, tut es, danke. Ich muss nur herausfinden, dass ich die x-Bereichsgröße einstellen und die zweite y-Achse verstecken soll ... Danke! – Matt
Warum verwenden Sie nicht ['seaborn'] (http://seaborn.pydata.org/tutorial/distributions.html#plotting-univariate-distributions)? – IanS