web-dev-qa-db-ja.com

bar()に必要な位置引数が1つありません: '左'

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'
4
basil ahamed

試してください:

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

パラメータxとheightに名前を付ける必要はありません。私は同じ問題を抱えていました、そしてそれは私のためにそれを解決しました。

3

matplotlib のように:



上記の引数に加えて、この関数はdataキーワード引数を取ることができます。

このようなdata引数が指定された場合、次の引数はdata[<arg>]に置き換えられます。

  • 次の名前のすべての引数: 'bottom'、 'color'、 'ecolor'、 'edgecolor'、 'height'、 'left'、 'linewidth'、 'tick_label'、 'width'、 'x'、 'xerr' 、 'y'、 'yerr'。

  • すべての位置引数。
1
Joseph D.