【问题标题】:Seaborn - center bins on x-axis categorySeaborn - x 轴类别的中心箱
【发布时间】:2021-07-11 16:16:14
【问题描述】:

给出下面的例子df:

Start    Event
February     A
February     A
February     B
February     C
February     C
March        A
March        B
March        B
March        D
March        D
March        C
April        A
April        A
April        A
April        B
April        B
April        B
April        C
April        C
April        D
April        D
April        D

当我尝试使用 seaborn 绘制直方图时:

sns.histplot(data=df, x='Start', hue='Event', multiple='dodge', discrete=False)

我得到以下结果:

但我希望垃圾箱以 x 轴为中心(就像 March 一样)。我该怎么做?

如果我将 'discrete' 设置为 True,它会将所有 bin 放在一起,这不是我想要的。

提前致谢!

编辑:看起来我不应该使用直方图,而是使用条形图!使用“sns.catplot”效果很好

【问题讨论】:

    标签: python seaborn histogram


    【解决方案1】:

    使用discrete=False,虽然您确实有离散值,但您会得到一个非常错误的直方图。

    默认,直方图尽量利用空间,组之间不留空隙。您可以设置例如shrink=0.9 创建一个小间隙。请注意,将为二月份丢失的D 创建一个高度为零的条形图。

    import matplotlib.pyplot as plt
    import seaborn as sns
    import pandas as pd
    import numpy as np
    from io import StringIO
    
    data_str = '''Start    Event
    February     A
    February     A
    February     B
    February     C
    February     C
    March        A
    March        B
    March        B
    March        D
    March        D
    March        C
    April        A
    April        A
    April        A
    April        B
    April        B
    April        B
    April        C
    April        C
    April        D
    April        D
    April        D'''
    df = pd.read_csv(StringIO(data_str), delim_whitespace=True)
    sns.histplot(data=df, x='Start', hue='Event', multiple='dodge', shrink=0.9)
    plt.margins(x=0.02) # less whitespace left and right
    plt.show()
    

    【讨论】:

    • 如果这回答了您的问题,您可以考虑投票和/或marking 将答案视为已接受。
    猜你喜欢
    • 2023-04-10
    • 2016-09-03
    • 2021-06-24
    • 2019-12-07
    • 2020-12-09
    • 2016-05-07
    • 1970-01-01
    • 2021-07-23
    • 2019-10-21
    相关资源
    最近更新 更多