[英]Best fitting line for a scatter plot
如果我不知道2軸之間的關系(或者我可以使用scipy.optimize),有沒有辦法找到散點圖的最佳擬合線。我的散點圖看起來像這樣
我想有這樣一條線 我需要得到最佳擬合線的點數,以便我進一步計算
for j in lat :
l=94*j
i=l-92
for lines in itertools.islice(input_file, i, l):
lines=lines.split()
p.append(float(Decimal(lines[0])))
vmr.append(float(Decimal(lines[3])))
plt.scatter(vmr, p)
您可以使用LOWESS(局部加權散點圖平滑) ,一種非參數回歸方法。
Statsmodels
在這里有一個實現,你可以使用它來適應你自己的更順暢。
有關使用Statsmodels
實現的示例,可以在散點圖中查看非線性關系的StackOverflow問題 。
您還可以在Seaborn
visuzalization庫的regplot()
函數中使用關鍵字參數lowess=True
。 有關詳細信息,請參閱Seaborn文檔 。
以下代碼是使用Seaborn
和上面StackOverflow問題中的數據的示例:
import numpy as np
import seaborn as sns
sns.set_style("white")
x = np.arange(0,10,0.01)
ytrue = np.exp(-x/5.0) + 2*np.sin(x/3.0)
# add random errors with a normal distribution
y = ytrue + np.random.normal(size=len(x))
sns.regplot(x, y, lowess=True, color="black",
line_kws={"color":"magenta", "linewidth":5})
這可能不是一個matplotlib問題,但我認為你可以用熊貓做這種事情,使用滾動中位數。
smoothedData = dataSeries.rolling(10, center = True).median()
實際上你可以用任何東西做滾動中位數,但是熊貓有內置功能。 Numpy也可能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.