bar () отсутствует 1 обязательный позиционный аргумент: 'left' - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь выполнить анализ основных компонентов и построить график осыпей с помощью функции 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'

Ответы [ 2 ]

0 голосов
/ 19 июля 2018

Попробуйте:

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

Параметры x и height не должны называться. У меня была та же проблема, и она решила ее для меня.

0 голосов
/ 09 мая 2018

Согласно matplotlib :

Примечание

В дополнение к вышеописанным аргументам эта функция может принимать аргумент ключевого слова данных.

Если дан такой data аргумент, следующее аргументы заменяются на data[<arg>]:

  • Все аргументы с следующие названия: «низ», «цвет», «цвет», «цвет», «высота», "Left", "linewidth", "tick_label", "width", "x", "xerr", "y", "yerr".

  • Все позиционные аргументы.
...