【问题标题】:How to plot a histogram using a logarithmic scale with Seaborn [duplicate]如何使用 Seaborn 的对数刻度绘制直方图 [重复]
【发布时间】:2018-07-26 10:50:32
【问题描述】:

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

到目前为止我的代码:

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

,这给了我以下图像:

如何将垂直轴更改为对数刻度(以最“pythonic”/“seabornic”的方式)?我环顾了各种答案,但对迄今为止找到的答案并不满意。

更新: 添加以下代码,按照答案here,使我的酒吧消失:

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

更新二: 以下代码解决了我的问题:

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)

【问题讨论】:

    标签: python python-3.x histogram seaborn


    【解决方案1】:

    我刚刚添加了最后几行:

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

    【讨论】:

    • 坐标轴变为对数刻度,但条形消失。知道可能是什么原因吗?
    猜你喜欢
    • 2022-06-13
    • 2020-10-21
    • 2019-04-09
    • 1970-01-01
    • 2015-12-31
    • 2021-11-11
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多