0

I want to replicate seaborn pairplot function but I need increased flexibility to plot extra things. I have the following minimal example, but I need that the uppermost labels show the range [10, 20] instead of [0, 1] without changing the displayed range of the first plot, and that the grid for the right plots shows horizontal bars. How can I keep x and y shared and displayed for all plots but exclude the y axis of diagonal plots as in seaborn?

import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=2, sharex='col',
                         sharey='row')
axes[0, 0]._shared_axes['y'].remove(axes[0, 0])
axes[1, 1]._shared_axes['y'].remove(axes[1, 1])
axes[0, 0].plot([0, 1])
axes[0, 1].scatter([0, 1], [10, 20])
axes[1, 0].scatter([0, 1], [100, 200])
axes[1, 1].plot([0, 1])
axes[0, 0].grid(color='lightgray', linestyle='--')
axes[0, 1].grid(color='lightgray', linestyle='--')
axes[1, 0].grid(color='lightgray', linestyle='--')
axes[1, 1].grid(color='lightgray', linestyle='--')
plt.show()

matplotlib replication attempt

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
df = pd.DataFrame([[10, 100], [20, 200]])
sns.pairplot(df, diag_kind='kde')
plt.show()

seaborn pairplot

cabo
  • 127
  • 1
  • 9

0 Answers0