如何使用Seaborn使用对数刻度绘制直方图

时间:2018-02-15 15:59:14

标签: python python-3.x histogram seaborn

我的问题很简单:我想使用Seaborn模块可视化多个直方图,但是,由于许多箱子包含很少的计数,我想使用对数刻度来显示垂直轴。

到目前为止我的代码:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(100,2), columns=['A','B'])
df = pd.melt(df, var_name='Category')     
g = sns.FacetGrid(df, col='Category', sharex=True, sharey=False, aspect=1.5)
g = g.map(plt.hist, "value", color="r")

,它给了我以下图像: enter image description here

如何将垂直轴更改为对数刻度(以最'pythonic'/'seabornic'方式)?我已经查看了各种答案,但对我到目前为止找到的答案并不满意。

更新 在答案here之后添加以下代码会使我的酒吧消失:

g.fig.get_axes()[0].set_yscale('log')

更新II: 以下代码修复了我的问题:

df = pd.DataFrame(np.random.rand(100,2), columns=['A','B'])
df = pd.melt(df, var_name='Category')     
g = sns.FacetGrid(df, col='Category', sharex=True, sharey=False, aspect=1.5)
g = g.map(plt.hist, "value", color="r", log=True)

1 个答案:

答案 0 :(得分:0)

我刚刚添加了最后几行:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(100,2), columns=['A','B'])
df = pd.melt(df, var_name='Category')  

g = sns.FacetGrid(df, col='Category', col_wrap=2, sharex=True, sharey=False, aspect=1.5)
g = g.map(plt.hist, "value", color="r")
g.axes[0].set_yscale('log')
g.axes[1].set_yscale('log')

enter image description here