bar()缺少1个必需的位置参数:'left'

时间:2018-05-09 07:18:21

标签: python matplotlib plot pca

我正在尝试执行主成分分析并使用matplotlib函数bar()绘制scree图。运行以下代码时,我发现此错误。

import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
from sklearn import preprocessing
import matplotlib.pyplot as plt

scaled_data = preprocessing.scale(data.T)
pca=PCA()
pca.fit(scaled_data)
pca_data = pca.transform(scaled_data)
per_var = np.round(pca.explained_variance_ratio_*100, decimals=1)

labels = ['PC'+str(i) for i in range(1,len(per_var)+1)]
plt.bar(x=range(1,len(per_var)+1), height=per_var, tick_label=labels)
plt.xlabel('Principal Component')
plt.ylabel('Percentage of Variance Explained')
plt.title('Scree Plot')
plt.show()

错误:

TypeError: bar() missing 1 required positional argument: 'left'

2 个答案:

答案 0 :(得分:3)

尝试:

plt.bar(range(1,len(per_var)+1), per_var, tick_label=labels)

不需要命名参数x和height。 我遇到了同样的问题,这为我解决了。

答案 1 :(得分:1)

根据matplotlib

  

注意

  除了上面提到的参数,这个函数可以采取一个   数据关键字参数。

  如果给出这样的data参数,则如下   参数由data[<arg>]替换:

     
      
  • 与...的所有论据   以下名称:'bottom','color','ecolor','edgecolor','height',   'left','linewidth','tick_label','width','x','xerr','y','yerr'。

  •   
  • 所有位置参数。
  •