2017-10-06 71 views
0

我的挑戰是在散點圖我已經有疊加的自定義線函數圖,代碼如下所示:覆蓋在散點圖上線函數 - seaborn

base_beta = results.params 
X_plot = np.linspace(0,1,400) 

g = sns.FacetGrid(data, size = 6) 
g = g.map(plt.scatter, "usable_area", "price", edgecolor="w") 

哪裏base_beta僅僅是一個常數,然後是一個係數。基本上,我想覆蓋繪出一條線y = constant + coefficient * x

我試圖覆蓋使用這一行的功能,但沒有奏效。

g = g.map_dataframe(plt.plot, X_plot, X_plot*base_beta[1]+base_beta[0], 'r-') 
plt.show() 

目前的散點圖看起來像這樣:
enter image description here

任何一個能幫助我嗎?

--ATTEMPT 1

base_beta = results.params 
X_plot = np.linspace(0,1,400) 
Y_plot = base_beta [0] + base_beta[1]*X_plot 

g = sns.FacetGrid(data, size = 6) 
g = g.map(plt.scatter, "usable_area", "price", edgecolor="w") 
plt.plot(X_plot, Y_plot, color='r') 
plt.show() 

導致相同的圖形,但沒有行: enter image description here

回答

1

您只需調用plt.plot繪製覆蓋數據線。

import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 
import seaborn as sns 

data = pd.DataFrame() 
data['usable_area'] = 5*np.random.random(200) 
data['price'] = 10*data['usable_area']+10*np.random.random(200) 

X_plot = np.linspace(0, 7, 100) 
Y_plot = 10*X_plot+5 

g = sns.FacetGrid(data, size = 6) 
g = g.map(plt.scatter, "usable_area", "price", edgecolor="w") 
plt.plot(X_plot, Y_plot, color='r') 
plt.show() 

產地:

enter image description here

+0

出於某種奇怪的原因,這是行不通的,我寫的代碼,但沒有被繪製在圖上。我用這個代碼和圖片更新了我的問題。 – Svarto

+0

工作!我錯誤地指定了我的numpy linspace。謝謝! – Svarto

+0

使用一個FacetGrid似乎這裏沒有意義。只是使用'plt.scatter(數據[ 'usable_area'],數據[ '價格']); plt.plot(X_plot,Y_plot,顏色= 'R')'似乎更爲合理。 – ImportanceOfBeingErnest