try a jointplot
np.random.seed(123)
n = 20
df = pd.DataFrame({"c_1":np.random.random(n),
"c_2":np.zeros(n),
"c_3":2 * np.random.random(n) - .5,
"c_4":np.zeros(n)})
df.c_2 = 2 * df.c_1 - 3 * np.random.random(n)
df.c_4 = 3 * df.c_3 - 2 * np.random.random(n)
#reformat the data for plotting...
df_plot = df[["c_1", "c_2"]].copy()
df_plot["cat"] = "set1"
df_temp = df[["c_3", "c_4"]].copy()
df_temp.columns = ["c_1", "c_2"]
df_temp["cat"] = "set2"
df_plot = df_plot.append(df_temp)
import scipy.stats as stats
plt.title('combined sets')
g=sns.JointGrid(data=df_plot, x='c_1', y='c_2')
g.plot( sns.regplot,sns.scatterplot)
g=g.plot_joint(sns.kdeplot)
g=g.plot_marginals(sns.kdeplot,shade=True)
plt.show()
filter=df_plot['cat']=='set1'
plt.title('Set1')
g = (sns.jointplot(x="c_1",
y="c_2",
kind='scatter',
color='green',
data=df_plot[filter],
marginal_kws=dict(bins=10, rug=True))
.plot_joint(sns.regplot)
.plot_joint(sns.kdeplot))
plt.show()
filter=df_plot['cat']=='set2'
plt.title('Set2')
g = (sns.jointplot(x="c_1",
y="c_2",
kind='scatter',
color='blue',
data=df_plot[filter],
marginal_kws=dict(bins=10, rug=True))
.plot_joint(sns.regplot)
.plot_joint(sns.kdeplot))
plt.show()