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()
我正在尝试使用以下代码绘制直方图:
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()