如何在 Seaborn 中为对数刻度定义 bin 的间隔

How to define breaks of the bins for log scale in Seaborn

考虑以下最小工作示例:

import numpy as np
import pandas as pd
import seaborn as sns

df = pd.DataFrame({
    "Area":[0.5, 0.05, 0.005]
})

sns.histplot(
    data=df,
    x="Area",
    bins=3,
    log_scale=True
)

上面的最小工作示例将产生

现在,让我们使用我们自己的分箱:

sns.histplot(
    data=df,
    x="Area",
    bins=np.logspace(-3, 0, num=4),
    log_scale=True
)

我希望生成一个类似于之前的直方图,但我得到了

我做错了什么?或者这是 Seaborn 0.11.2 的错误?

显然,您必须在对数刻度上给出 bin。 IE。使用 bins=np.logspace(-3, 0, 4),您将在 10**np.logspace(-3, 0, 4) 处获得垃圾箱。使用 linspace 代替,你应该得到你正在寻找的东西。 bins=np.linspace(-3, 0, 4)10**np.linspace(-3, 0, 4):

处休息
sns.histplot(
    data=df,
    x="Area",
    bins=np.linspace(-3, 0, num=4),
    log_scale=True
)