Пытаясь сделать гистограмму, в bar() отсутствует 1 обязательный позиционный аргумент: «высота»

Я пытаюсь сделать гистограмму, мой код

data = np.genfromtxt("ca1_data/distance.csv",
               delimiter=',',skip_header=1,
               dtype=[('Year','i4'),('Mode','U50'),('Distance','U10')],
               missing_values=['na','-'],filling_values=[0])
years = np.arange(5)
scores = [(data[(data['Mode']=='MRT') & (data['Year']>=2010)]['Distance']), 
          (data[(data['Mode']=='Bus') & (data['Year']>=2010)]['Distance'])]
labels = np.arange(2010,2015)
print(scores)
fig = plt.figure(figsize=(20,10))
ax1 = fig.add_subplot(111)
ax1.set_xticklabels(labels, fontsize=10)
plt.title(title)
plt.xlabel('Years')
plt.ylabel('Distance')
bp_dict = plt.bar(scores,10,labels=labels)
plt.show()

проблема в том, что я получил ошибку

bar() missing 1 required positional argument: 'height'

Поэтому я добавил его вручную

bp_dict = plt.bar(scores,10,labels=labels)

Однако я получил другую ошибку

TypeError: unhashable type: 'numpy.ndarray'

Заранее спасибо!

Обновлять: Вот что такое вывод баллов

[array(['10.3', '10', '9.6', '9.5', '9.2'], dtype='<U10'), array(['4.8', '4.5', '4.4', '4.3', '4.3'], dtype='<U10')]

Обновление2: я обновил код

scores = list(map(float, np.array(scores).flatten()))

Я получил новую ошибку после установки этого

AttributeError: Unknown property labels
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
0
22 531
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для гистограммы вам необходимо указать x-расположение всех столбцов. Самый простой способ, если у вас нет явных значений x, — использовать диапазон 0, 1, 2, 3, ... и т. д. Итак, если у вас есть N баров для построения, вы можете сгенерировать N значений x, используя range() или использовать labels в качестве аргумента x.

Поэтому используйте

labels =  np.arange(2010,2015)

scores = [np.array(['10.3', '10', '9.6', '9.5', '9.2'], dtype='<U10'), 
          np.array(['4.8', '4.5', '4.4', '4.3', '4.3'], dtype='<U10')]

bp_dict = plt.bar(labels, list(map(float, scores[0])), align='edge', width=-0.4)
bp_dict = plt.bar(labels, list(map(float, scores[1])), align='edge', width=0.4)

Привет спасибо за ответ! У меня есть еще одна ошибка нехешируемого типа: 'numpy.ndarray', вы знаете, что вызвало это?

Wolfeatspotatoes 21.06.2019 15:41

Скажи мне, что ты получишь, когда print (scores)

Sheldore 21.06.2019 15:45

@Wolfeatspotatoes: добавьте scores = list(map(float, np.array(scores).flatten())) перед построением графика

Sheldore 21.06.2019 15:55

Другие вопросы по теме