16
我正在尝试创建一个使用seaborn JointGrid对象与每个轴关联的KDE和直方图的loglog图。这让我非常接近,但直方图框不能很好地转换成日志空间。有没有办法轻松做到这一点,而无需重新创建边缘轴?用seaborn jointgrid记录日志图
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
data = sns.load_dataset('tips')
g = sns.JointGrid('total_bill', 'tip', data)
g.plot_marginals(sns.distplot, hist=True, kde=True, color='blue')
g.plot_joint(plt.scatter, color='black', edgecolor='black')
ax = g.ax_joint
ax.set_xscale('log')
ax.set_yscale('log')
g.ax_marg_x.set_xscale('log')
g.ax_marg_y.set_yscale('log')
我不认为你会得到任何比你现在有什么更接近设定
bins=
。这是我认为'jointplot'应该更好地处理的事情,但是我一直很谨慎地补充它,因为我不确定人们期望什么最有意义。你能说出你更喜欢直方图的样子吗?日志空间中的等宽条? – mwaskom 2014-09-26 14:45:01是的 - 恒定宽度的酒吧将是太棒了。我知道如何使用ax.hist和np.logspace来手动执行此操作,但为了与seaborn一起使用,我想我会继续并在DataFrame中记录数据,然后将10^x应用于轴标签解决方法。作为一个方面说明,我很困惑,为什么只设置 AX = g.ax_joint ax.set_xscale(“登录”) ax.set_yscale(“登录”) 不会自动设置边际轴?谢谢你的回应,这是一个很棒的包! – Koppology 2014-09-26 15:54:19
这是令人惊讶的。这些坐标轴在seaborn设置'JointGrid'时共享,因此它暗示了matplotlib中的不一致性。 – mwaskom 2014-09-26 17:15:21