如何在 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
)
考虑以下最小工作示例:
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
)