簡體   English   中英

使用 seaborn regplot 擴展回歸線

[英]Extended regression lines with seaborn regplot

我進行了搜索,但沒有找到重新分級 seaborn 庫的答案。 我還檢查了lmplot()regplot()的文檔,但也沒有找到。 是否可以擴展和控制回歸線的長度? 默認情況下,seaborn 根據 x 軸的長度擬合回歸線的長度。 另一種選擇是使用參數truncate=True - 這會將回歸線限制在數據范圍內。 其他選擇?

在我的示例中,我希望將下回歸線向下延伸至 x=0。 而上面的那條線一直延伸到與下面那條線的交點。

例子

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

file = 'cobbles.csv'
df = pd.read_csv(file, sep=',')

sns.regplot(x='downward_temp', y='downward_heat', data=df, ci=None)
sns.regplot(x='upward_temp', y='upward_heat', data=df, ci=None, order=2)


plt.xlim([0,25])
plt.ylim([0,100])
plt.show()

如果你之前知道要策划你的X限制,你可以set_xlim之前調用該軸regplot和seaborn然后將延長回歸線和CI超過XLIM的范圍。

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

file = 'cobbles.csv'
df = pd.read_csv(file, sep=',')

fig, ax = plt.subplots()

xlim = [0,25]
ax.set_xlim(xlim)

sns.regplot(x='downward_temp', y='downward_heat', data=df, ci=None, ax=ax)
sns.regplot(x='upward_temp', y='upward_heat', data=df, ci=None, order=2, ax=ax)

ax.set_ylim([0,100])
plt.show()

簡短回答:您只需要Seaborn 繪圖之前添加plt.xlim(start,end)


我想 Seaborn 從繪圖限制自動確定長度可能更有意義。

同樣的問題把我帶到了這里,@Serenity 的回答啟發了我像xlims = ax.get_xlim()這樣的東西可能會有所幫助。

之后可以嘗試修復並提交對 Seaborn 的更改。

你必須像 seaborn 一樣使用scipy.stats.linregress來計算線性回歸函數。 然后您必須生成 x 數組以覆蓋畫布的新 x 軸限制並在其上繪制擴展回歸線。 有關詳細信息,請查看示例:

import numpy as np; np.random.seed(8)

import seaborn as sns
import matplotlib.pylab as plt
import scipy.stats

# test data
mean, cov = [4, 6], [(1.5, .7), (.7, 1)]
x, y = np.random.multivariate_normal(mean, cov, 80).T
ax = sns.regplot(x=x, y=y, color="g")

# extend the canvas
plt.xlim([0,20])
plt.ylim([0,15])

# calculate linear regression function
slope, intercept, r_value, p_value, std_err = \
 scipy.stats.linregress(x=x,y=y)

# plot the regression line on the extended canvas
xlims = ax.get_xlim()
new_x = np.arange(xlims[0], xlims[1],(xlims[1]-xlims[0])/250.)
ax.plot(new_x, intercept + slope *  new_x, color='g', linestyle='-', lw = 2.5)

plt.show()

在此處輸入圖片說明

將 truncate 設置為 False 就可以了。 在此處添加此答案,可能會對某人有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM