Consider the following minimal working example:
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
)
The minimal working example above will produce
Now, let’s use our own breaks of the bins:
sns.histplot(
data=df,
x="Area",
bins=np.logspace(-3, 0, num=4),
log_scale=True
)
I expected to produce a histogram similar to the one before but I’m getting
What am I doing wrongly? Or is this a bug with Seaborn 0.11.2?
Advertisement
Answer
Apparently, you have to give the bins on the log scale. I.e. with bins=np.logspace(-3, 0, 4) you’re getting bins at 10**np.logspace(-3, 0, 4). Use linspace instead and you should be getting what you’re looking for. bins=np.linspace(-3, 0, 4) gives breaks at 10**np.linspace(-3, 0, 4):
sns.histplot(
data=df,
x="Area",
bins=np.linspace(-3, 0, num=4),
log_scale=True
)

