Instantly share code, notes, and snippets.

Embed
What would you like to do?
def plot_correlogram(df,figsize=(20,20)):
''' Creat an n x n matrix of scatter plots for every
combination of numeric columns in a dataframe'''
cols = list(df.columns[df.dtypes=='float64'])
n = len(cols)
fig, ax = plt.subplots(n,n,figsize=figsize)
for i,y in enumerate(cols):
for j,x in enumerate(cols):
if i != n-1:
ax[i,j].xaxis.set_ticklabels([])
if j != 0:
ax[i,j].yaxis.set_ticklabels([])
if i != j:
try:
tmp = df[[x,y]].copy()
tmp.dropna(inplace=True)
ax[i,j].plot(tmp[x].values,tmp[y].values,'.',markersize=0.5,alpha=0.5,color='black')
except:
pass
else:
midx = df[x].min() + (df[x].max() - df[x].min())/2.0
midy = df[y].min() + (df[y].max() - df[y].min())/2.0
ax[i,j].text(midx, midy, y.replace(' ','\n'),
horizontalalignment='center',
verticalalignment='center')
ax[i,j].set_ylim((df[y].min(),df[y].max()))
ax[i,j].set_xlim((df[x].min(),df[x].max()))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment