我正在尝试使用seaborn的JointGrid对象使用KDE和与每个轴关联的直方图创建对数图。这使我非常接近,但是直方图箱无法很好地转换为logspace。有没有一种方法可以轻松地执行此操作而无需重新创建边缘轴?

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')

最佳答案

对于日志直方图,我发现使用np.logspace()设置自己的bin通常很有用。

mybins=np.logspace(0,np.log(100),100)


然后只需在bins=中设置_marginals

data = sns.load_dataset('tips')
g = sns.JointGrid('total_bill', 'tip', data,xlim=[1,100],ylim=[0.01,100])
g.plot_marginals(sns.distplot, hist=True, kde=True, color='blue',bins=mybins)
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')

关于matplotlib - 对接测井图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26059979/

10-13 07:45