带seaborn-regp的扩展回归线

2024-09-27 22:20:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我搜索了一下,但没有找到答案。我还检查了lmplot()regplot()的文档,但是没有找到。 有可能延长和控制回归线的长度吗?默认情况下,seaborn根据x轴的长度拟合回归线的长度。另一个选择是使用参数truncate=True-这将仅将回归线限制在数据范围内。 其他选择?在

在我的例子中,我希望下回归线向下延伸到x=0。上面的那条线一直延伸到下一条的交叉点。在

example

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()

Tags: csvimportdfdataaspltseaborntemp
3条回答

如果您在绘制之前知道x限制,可以在调用regplot之前对轴进行set_xlim,然后seaborn将在xlim的范围内扩展回归线和CI。在

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()

您必须使用scipy.stats.linregress来计算线性回归函数,就像seaborn do一样。然后,您必须生成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()

enter image description here

简而言之:你只需要在你的海生情节之前加上plt.xlim(start,end)。在


我想对Seaborn来说,根据情节界限自动确定长度可能更有意义。在

同样的问题也把我带到了这里,@Serenity的回答启发了我,xlims = ax.get_xlim()之类的东西可能会有所帮助。在

之后可能会尝试修复并向Seaborn提交更改。在

相关问题 更多 >

    热门问题