Inf*_*nce 3 python matplotlib histogram
我确信对此有一个简单的答案,我只是在看错误,但是我的 pyplot 直方图发生了什么?这是输出;数据包含年龄在 18 到 24 岁之间的参与者,没有小数年龄(没有人是 18.5):
为什么垃圾桶是这样交错排列的?当前宽度设置为 1,所以每个条应该是一个 bin 的宽度,对吗?当宽度小于 0.5 时,问题会变得更糟,当条形看起来像是在完全不同的 bin 中时。
这是代码:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
csv = pd.read_csv('F:\Python\Delete\Delete.csv')
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]
plt.hist(new_age_f, alpha=.80, label='Female', width=1, align='left')
plt.hist(new_age_m, alpha=.80, label='Male', width=1, align='left')
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
谢谢!
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2261 次 |
| 最近记录: |