Python中的多个直方图

时间:2018-03-28 11:59:47

标签: python matplotlib seaborn

我的数据框df具有以下属性

ID                  X1                       X2
0                  3969518                   24700
1                  8111123                   20000
2                  250000                    987000
3                  10745929                  5000

我试图绘制像这样的多重直方图

enter image description here

我正在使用seaborn和matplotlib

x1 = df2[['X1']]
x2 = df2[['X2']]
kwargs = dict(histtype='stepfilled', alpha=0.3, normed=True, bins=20)
plt.hist(x1, **kwargs)
plt.hist(x2, **kwargs);

但我得到以下错误

TypeError: len() of unsized object

1 个答案:

答案 0 :(得分:1)

快速修复,你需要考虑数组而不是熊猫系列:

x1 = df2[['X1']]
x2 = df2[['X2']]
kwargs = dict(histtype='stepfilled', alpha=0.3, normed=True, bins=20)
plt.hist(x1.values, **kwargs)
plt.hist(x2.values, **kwargs);

可替换地:

x1 = df2[['X1']]
x2 = df2[['X2']]
kwargs = dict(histtype='stepfilled', alpha=0.3, normed=True, bins=20)
plt.hist(data=x1, x='X1', **kwargs)
plt.hist(data=x2, x='X2', **kwargs);

或者更好的是,您不需要定义两个新系列:

kwargs = dict(histtype='stepfilled', alpha=0.3, normed=True, bins=20)
plt.hist(data=df2, x='X1', **kwargs)
plt.hist(data=df2, x='X2', **kwargs);