[英]python seaborn lmplot regplot for y-log scale fit
我想知道为什么 seaborn lmplot 和 regplot 只能选择做 logx。 我经常使用线性拟合 log(y) ~ x 并且 Y 轴应始终采用对数刻度以显示相关性(作为惯例)。
这是可以在 Seaborn 中完成的事情吗?
logy=True 的选项会很好......
谢谢。
您可以简单地将 y 轴比例设置为记录:
import seaborn as sns; sns.set(color_codes=True)
tips = sns.load_dataset("tips")
ax = sns.regplot(x="total_bill", y="tip", data=tips)
ax.set_yscale('log') # set_yscale is a function, not a string
Seaborn 不支持这一点,但您可以模仿它手动执行的操作,在适当的地方插入np.power(..., 10)
和np.log10(...)
:
# create regression plotter object with log’d Y values
rp = sns.regression._RegressionPlotter(x[y>0], np.log10(y[y>0]))
# fit regression model
grid, yhat, err_bands = rp.fit_regression(ax)
# plot regression line with restored Y values
line, = ax.plot(grid, np.power(yhat, 10))
# plot error boundaries
ax.fill_between(
grid,
*[np.power(b, 10) for b in err_bands],
facecolor=line.get_color(),
alpha=.15,
)
# set axis to log10 scale
ax.set_yscale('log')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.