1 python matplotlib seaborn jointplot
我试图通过以下方式绘制:
g = sns.jointplot(x = etas, y = vs, marginal_kws=dict(bins=100), space = 0)
g.ax_joint.set_xscale('log')
g.ax_joint.set_yscale('log')
g.ax_joint.set_xlim(0.01)
g.ax_joint.set_ylim(0.01)
g.ax_joint.set_xlabel(r'$\eta$')
g.ax_joint.set_ylabel("V")
plt.savefig("simple_scatter_plot_Seanborn.png",figsize=(8,8), dpi=150)
Run Code Online (Sandbox Code Playgroud)
这给我留下了以下图像:
这不是我想要的。为什么最后要填充直方图?那里没有数据点,所以我不明白......
您正在 matplotlib 轴上设置对数刻度,但在您执行此操作时,seaborn 已经计算了直方图。因此,线性空间中的等宽 bin 看起来具有不同的宽度;最低的箱的实际值范围很窄,但这在水平图上占用了大量空间。
测试于python 3.10
, matplotlib 3.5.1
,seaborn 0.11.2
解决方案:传递log_scale=True
到直方图:
import seaborn as sns
# test dataset
planets = sns.load_dataset('planets')
g = sns.jointplot(data=planets, x="orbital_period", y="distance", marginal_kws=dict(log_scale=True))
Run Code Online (Sandbox Code Playgroud)
marginal_kws=dict(log_scale=True)
import seaborn as sns
# test dataset
planets = sns.load_dataset('planets')
g = sns.jointplot(data=planets, x="orbital_period", y="distance", marginal_kws=dict(log_scale=True))
Run Code Online (Sandbox Code Playgroud)