bar()缺少一个必需的位置参数:“left”。

4
我正在尝试执行主成分分析并使用matplotlib函数bar()绘制屏幕图。在运行以下代码时,我发现了这个错误。
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'

你能指示一下你在代码中是如何定义 plt 的吗? - Laurent H.
你能创建一个 [mcve] 吗? - DavidG
2个回答

4

尝试:

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

参数x和height不需要命名。我有同样的问题,这对我很有帮助。

1
根据 matplotlib
注意:
除了上述描述的参数之外,此函数还可以接受一个数据关键字参数。
如果提供了这样一个data参数,则以下参数将被data[<arg>]替换:
- 所有具有以下名称的参数:'bottom'、'color'、'ecolor'、'edgecolor'、'height'、'left'、'linewidth'、'tick_label'、'width'、'x'、'xerr'、'y'、'yerr'。 - 所有位置参数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接