A quick visual fit shows whether a relationship is roughly linear, curved or driven by outliers before you model it formally.
sns.regplot(data=df, x=..., y=...) draws a scatter plot plus a fitted linear regression line with a 95% bootstrap confidence band for the line. sns.lmplot is the figure-level version with hue, col and row, so you can fit one line per group or per panel.
Options change the model:
order=2fits a polynomial;logistic=Truefits a logistic regression for a 0/1 outcome (needs statsmodels);robust=Truedown-weights outliers (needs statsmodels);lowess=Truedraws a nonparametric smooth curve (needs statsmodels);ci=Noneremoves the band, which is faster with lots of data;x_bins=10orx_estimator=np.meansummarize a discrete or crowded x.
residplot plots the residuals of the fit; a visible pattern means the straight-line model is missing structure.
These functions are for visualization: they do not return the slope, intercept or p-values. Fit the model with numpy.polyfit, scikit-learn or statsmodels when you need numbers, and make sure the plot shows the same model you report.
A band that looks narrow does not mean predictions are precise: it is the uncertainty of the mean line, not of individual points. Individual observations scatter much more widely, which the points themselves show.
Example
import matplotlib
matplotlib.use("Agg")
import seaborn as sns
import pandas as pd
import numpy as np
rng = np.random.default_rng(6)
df = pd.DataFrame({"ads": rng.uniform(0, 10, 80)})
df["sales"] = 5 + 2.0 * df["ads"] + rng.normal(0, 3, 80)
df["store"] = rng.choice(["mall", "street"], 80)
ax = sns.regplot(data=df, x="ads", y="sales", ci=95, seed=0,
scatter_kws={"alpha": 0.5})
slope, intercept = np.polyfit(df["ads"], df["sales"], 1) # numbers come from you
print(round(slope, 1), round(intercept, 1)) # 2.0 4.8 (true: 2 and 5)
print(len(ax.collections)) # 2: scatter points + CI band
ax.figure.savefig("reg.png")
g = sns.lmplot(data=df, x="ads", y="sales", hue="store", height=3)
g.savefig("reg_by_store.png")Remember
- regplot/lmplot draw a fit with a confidence band for the mean line
order,logistic,robustandlowesschange the fitted model- They do not return coefficients; fit the model separately for numbers
Watch out for
- Reading the narrow confidence band as the range where individual points will fall.