我确定这是一个简单的答案,我只是看错了,但是我的pyplot直方图发生了什么?这是输出;数据包含年龄在18到24岁之间的参与者,没有分数年龄(没有人18.5):
UIDevice currentDevice model possible values
为什么这些箱子像这样交错?当前宽度设置为1,因此每个条形应该是一个bin的宽度,对吧?当宽度小于0.5时,问题变得更加严重,当条形看起来像是在完全不同的箱子中时。
以下是代码:
{{1}}
谢谢!
答案 0 :(得分:4)
plt.hist
没有任何参数width
。如果指定了width
,则会将其提供给底层补丁,这意味着矩形的宽度为1
。这与直方图的bin宽度无关,我猜想在直方图调用中几乎没有理由使用width
。
而你想要的是指定箱子。您可能还想在两个直方图中使用相同的bin。
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(5)
import pandas as pd
csv = pd.DataFrame({"age" : np.random.randint(18,27, 20),
"gender" : np.random.randint(1,3,20)})
age = csv.age
gender = csv.gender
new_age = age[~np.isnan(age)]
new_age_f = new_age[gender==2]
new_age_m = new_age[gender==1]
bins = np.arange(new_age.values.min(),new_age.values.max()+2)
plt.hist(new_age_f, alpha=.40, label='Female', bins=bins, ec="k")
plt.hist(new_age_m, alpha=.40, label='Male', bins=bins, ec="k")
plt.legend()
plt.show()