9

I've tried to find a way to display correlation coefficients in the lower or upper tri of a pandas scatter matrix - can someone point me in the right direction? Thank you.

1

1 Answer 1

27

A working minimal example

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from pandas.plotting import scatter_matrix
df = pd.DataFrame(np.random.randn(100, 4), columns=['a', 'b', 'c', 'd'])
axes = scatter_matrix(df, alpha=0.5, diagonal='kde')
corr = df.corr().to_numpy()
for i, j in zip(*plt.np.triu_indices_from(axes, k=1)):
    axes[i, j].annotate("%.3f" %corr[i,j], (0.8, 0.8), xycoords='axes fraction', ha='center', va='center')
plt.show()

https://i.sstatic.net/apXPu.png

Sign up to request clarification or add additional context in comments.

3 Comments

You can also specify the figure size: scatter_matrix(df, alpha=0.5, figsize=(15, 10), diagonal='kde')
anyone looking to plot the lower triangle numbers replace triu with tril docs.scipy.org/doc/numpy-1.15.0/reference/generated/…
as_matrix() is long deprecated. Use to_numpy() instead.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.