python - How to plot multiple Seaborn Jointplot in Subplot -
i'm having problem placing seaborn jointplot
inside multicolumn subplot
.
import pandas pd import seaborn sns df = pd.dataframe({'c1': {'a': 1,'b': 15,'c': 9,'d': 7,'e': 2,'f': 2,'g': 6,'h': 5,'k': 5,'l': 8}, 'c2': {'a': 6,'b': 18,'c': 13,'d': 8,'e': 6,'f': 6,'g': 8,'h': 9,'k': 13,'l': 15}}) fig = plt.figure(); ax1 = fig.add_subplot(121); ax2 = fig.add_subplot(122); sns.jointplot("c1", "c2", data=df, kind='reg', ax=ax1) sns.jointplot("c1", "c2", data=df, kind='kde', ax=ax2)
notice how portion of jointplot
placed inside subplot , rest left inside 2 plot frames. i'd want have both distributions
inserted inside subplots
.
can this?
it can not done without hacking. jointplot
calls jointgrid
method, in turn creates new figure
object every time called.
therefore, hack make 2 jointplots (jg1
jg2
), make new figure, migrate axes objects jg1
jg2
new figure created.
finally, adjust sizes , positions of subplots in new figure created.
jg1 = sns.jointplot("c1", "c2", data=df, kind='reg') jg2 = sns.jointplot("c1", "c2", data=df, kind='kde') #subplots migration f = plt.figure() j in [jg1, jg2]: in j.fig.axes: f._axstack.add(f._make_key(a), a) #subplots size adjustment f.axes[0].set_position([0.05, 0.05, 0.4, 0.4]) f.axes[1].set_position([0.05, 0.45, 0.4, 0.05]) f.axes[2].set_position([0.45, 0.05, 0.05, 0.4]) f.axes[3].set_position([0.55, 0.05, 0.4, 0.4]) f.axes[4].set_position([0.55, 0.45, 0.4, 0.05]) f.axes[5].set_position([0.95, 0.05, 0.05, 0.4])
it hack because using _axstack
, _add_key
private methods, might , might not stay same in matplotlib
future versions.
Comments
Post a Comment