我正在尝试执行主成分分析并使用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'
答案 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'。
- 所有位置参数。