As I mentioned in the comments, seaborn
is a great choice for statistical data visualization.
import seaborn as sns
sns.regplot(x='motifScore', y='expression', data=motif)
Alternatively, you can use statsmodels.regression.linear_model.OLS
and manually plot a regression line.
import statsmodels.api as sm
# regress "expression" onto "motifScore" (plus an intercept)
model = sm.OLS(motif.expression, sm.add_constant(motif.motifScore))
p = model.fit().params
# generate x-values for your regression line (two is sufficient)
x = np.arange(1, 3)
# scatter-plot data
ax = motif.plot(x='motifScore', y='expression', kind='scatter')
# plot regression line on the same axes, set x-axis limits
ax.plot(x, p.const + p.motifScore * x)
ax.set_xlim([1, 2])
Yet another solution is statsmodels.graphics.regressionplots.abline_plot
which takes away some of the boilerplate from the above approach.
import statsmodels.api as sm
from statsmodels.graphics.regressionplots import abline_plot
# regress "expression" onto "motifScore" (plus an intercept)
model = sm.OLS(motif.expression, sm.add_constant(motif.motifScore))
# scatter-plot data
ax = motif.plot(x='motifScore', y='expression', kind='scatter')
# plot regression line
abline_plot(model_results=model.fit(), ax=ax)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…