Matplotlib 直方图缺失条

Matplotlib histogram missing bars

我正在尝试使用以下代码绘制直方图:

plt.subplots(figsize = (10,6))

lbins=[0,85,170,255,340,425]

plt.hist(flt_data['tree_dbh'], bins=lbins)

plt.gca().set(title='Tree diameter histogram', ylabel='Frequency')

输出结果如下:

输出不包括直方图中的所有数据。

以下是该列的描述性统计:

您的所有数据似乎都在第一个栏中。并不是因为条形图或缺失条形图,只是它们的值与第一个相比非常小。

您有 652173 个分值,平均值为 11.7,标准差为 8.6。这意味着最大值 425 很可能是异常值。

尝试使用:

lbins = np.arange(0,100, 10)

你也可以看看 len(flt_data['tree_dbh'][flt_data['tree_dbh'] > 85]) 它会告诉你在你看不到的其他柱中计算了多少点

您可以设置对数 y-axis 以更好地显示小条。您也可以尝试使用 seaborn 的 sns.boxenplot(flt_data['tree_dbh']) 来更好地可视化分布。

这是一个模拟数据的例子。 df.describe() 显示:

count    65000.000000
mean        12.591938
std         13.316495
min          0.000000
25%          2.000000
50%          9.000000
75%         18.000000
max        150.000000
Name: data, dtype: float64
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

np.random.seed(2402)
df = pd.DataFrame({'data': (np.random.normal(3, 2, 65000) ** 2).astype(int)})
df['data'].describe()

lbins = [0, 85, 170, 255, 340, 425]

fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, figsize=(14, 4))

ax1.hist(df['data'], bins=lbins, fc='skyblue', ec='black')
ax1.set_title('histogram with scalar y-axis')

ax2.hist(df['data'], bins=lbins, fc='skyblue', ec='black')
ax2.set_yscale('log')
ax2.set_title('histogram with log y-axis')

sns.boxenplot(x=df['data'], color='skyblue', ax=ax3)
ax3.set_title('sns.boxenplot')

plt.tight_layout()
plt.show()