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.bar(range(1,len(per_var)+1), per_var, tick_label=labels)
パラメータxとheightに名前を付ける必要はありません。私は同じ問題を抱えていました、そしてそれは私のためにそれを解決しました。
matplotlib のように:
注
上記の引数に加えて、この関数はdataキーワード引数を取ることができます。
このようなdata
引数が指定された場合、次の引数はdata[<arg>]
に置き換えられます。
- 次の名前のすべての引数: 'bottom'、 'color'、 'ecolor'、 'edgecolor'、 'height'、 'left'、 'linewidth'、 'tick_label'、 'width'、 'x'、 'xerr' 、 'y'、 'yerr'。
- すべての位置引数。