条形图错误:尺寸不兼容

时间:2017-05-05 13:50:43

标签: python pandas numpy matplotlib

我有下面的代码我试图禁止绘图,但我一直得到以下错误,我不知道为什么 - 所有长度(var_exp,eigen_values和cum_sum_var)都是18,093。我错过了什么?我使用的是Python 2.7

  

文件“”,第2行,in       label ='个别解释方差')

     

文件“C:\ ANACONDA \ lib \ site-packages \ matplotlib \ pyplot.py”,行   2573,在酒吧       ret = ax.bar(left,height,width = width,bottom = bottom,** kwargs)

     

文件“C:\ ANACONDA \ lib \ site-packages \ matplotlib \ axes_axes.py”,行   1991年,在酒吧       nbars)

     
    

AssertionError:不兼容的大小:参数'height'必须是length     13或标量

  
eigen_values, eigen_vectors = np.linalg.eig(covariance_matrix) 

tot = sum(eigen_values)
var_exp = [(i / tot) for i in sorted(eigen_values, reverse=True)]
cum_var_exp = np.cumsum(var_exp)

len(var_exp)
Out[83]: 18093

len(eigen_values)
Out[84]: 18093

len(cum_var_exp)
Out[85]: 18093

bar(range(1,14), var_exp, alpha=0.5, align='center',
                  label='individual explained variance')
step(range(1,10), cum_variance, where='mid',
     label = 'Cumulative Explained Variance')
ylabel('Explained variance ratio')
xlabel('Principal components')
legend(loc='bottom')
show()

2 个答案:

答案 0 :(得分:0)

Matplotlib' s bar接受这些论点

matplotlib.pyplot.bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs)

您提供的left范围为0-14个数字,而高度设置为整数。似乎height必须是13位数的listgenerator

答案 1 :(得分:0)

谢谢@ImportanceOfBeingErnest!你的答案完美无缺:

bar(range(1,14), var_exp[:13])

enter image description here