Skip to content

Instantly share code, notes, and snippets.

@akarve
Forked from ebressert/Anscombe's Quartet
Last active October 28, 2016 05:21
Show Gist options
  • Save akarve/9c70ed87e6a5cbc8f5df82b8f58be16e to your computer and use it in GitHub Desktop.
Save akarve/9c70ed87e6a5cbc8f5df82b8f58be16e to your computer and use it in GitHub Desktop.
updated for python 3 and immediate display
import seaborn as sns
from scipy.optimize import curve_fit
# Function for linear fit
def func(x, a, b):
return a + b * x
# Seaborn conveniently provides the data for
# Anscombe's quartet.
df = sns.load_dataset("anscombe")
dset = df.dataset.unique()
# Computing basic stats and linear regression
# all groups.
for s in series:
tmp = df.loc[df.dataset == s]
print('Data {0}'.format(s))
print('Mean x: {0:.1f}'.format(tmp.x.mean()))
print('Mean y: {0:.1f}'.format(tmp.y.mean()))
print('Variance x: {0:.2f}'.format(tmp.x.var()))
print('Variance y: {0:.2f}'.format(tmp.y.var()))
print('Correlation between x and y: {0:.3f}'.format(tmp.x.corr(tmp.y)))
popt, pcov = curve_fit(func, tmp.x, tmp.y)
print('Linear regression coefficients: y = {a:.2f} + {b:.2f}x'.format(a=popt[0], b=popt[1]))
print('\n')
# Setting up params for graphic
sns.set(style="white")
sns.set_context("talk")
sns.despine(left=True)
# Plotting
catcher = sns.lmplot("x", "y", col="dataset", hue="dataset", data=df,
col_wrap=2, ci=None, palette="husl", size=4,
scatter_kws={"s": 50, "alpha": 0.7}, aspect=1.5).fig.show()
sns.despine()
# Saving graphic
plt.savefig('quartet.png')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment