我目前正在試圖在MatPlotLib中繪製散點圖上的趨勢線圖。如何在基於KDE的散點圖matplotlib上繪製趨勢線?
我知道numpy polyfit
函數。它不會做我想要的。
因此,這裏是我到目前爲止有:
plot = plt.figure(figsize=(10,10)) #Set up the size of the figure
cmap = "viridis" #Set up the color map
plt.scatter(samples[1], samples[0], s=0.1, c=density_sm, cmap=cmap) #Plot the Cross-Plot
plt.colorbar().set_label('Density of points')
plt.axis('scaled')
plt.xlim(-0.3,0.3)
plt.ylim(-0.3,0.3)
plt.xlabel("Intercept")
plt.ylabel("Gradient")
plt.axhline(0, color='green', alpha=0.5, linestyle="--")
plt.axvline(0, color='green', alpha=0.5, linestyle="--")
#Trend-line_1
z = np.polyfit(samples[1], samples[0], 1)
p = np.poly1d(z)
plt.plot(samples[0],p(samples[0]),color="#CC3333", linewidth=0.5)
#Trend-line_2
reg = sm.WLS(samples[0], samples[1]).fit()
plt.plot(samples[1], reg.fittedvalues)
這裏是結果:
我要的是:
趨勢可以很容易看到,但問題是w帽子功能使用?
您能添加一個有代表性的數據集和預期結果的圖片嗎? – Nilesh
我的數據集大約是0.5 Gb,我該如何取代它? –
對我來說''polyfit'似乎適合在這種情況下使用。也許這會有助於說明你沒有使用它的原因。當然還有其他的工具可以用來適應數據,statsmodel包中最簡單的工具是[普通最小二乘](http://statsmodels.sourceforge.net/devel/regression.html)。另外你正在使用的工具(你沒有告訴它是哪一個)可能有一個可用。你也可以簡單地使用['seaborn.regplot'](http://seaborn.pydata.org/generated/seaborn.regplot.html),其缺點是你沒有得到任何關於你的適合性的信息。 – ImportanceOfBeingErnest