Ошибка значения барплота Python: не удалось преобразовать строку в плавающую:

#python #matplotlib #bar-chart

Вопрос:

Я пытаюсь построить простую диаграмму на Python, но когда я запускаю код:

 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
x=['A','B','C','D','E','F','G','H','I','J']
y=[47, 23, 27,  0, 82,  7, 46, 92, 36, 76]
plt.bar(x,y)
plt.xlabel('Categories')
plt.ylabel("Values")
plt.title('Categories Bar Plot')
plt.show()
 

Я получаю сообщение об ошибке:

 ValueError: could not convert string to float: 'A'
 

Я не знаю, почему это не работает, особенно потому, что это точная копия примера с веб-сайта, который должен работать.

Комментарии:

1. Это отлично работает с текущей версией matplotlib. Я голосую за то, чтобы закрыть это как невоспроизводимое.

Ответ №1:

Какие версии pandas/matplotlib вы используете? Вы позаботились о том, чтобы использовать чистую окружающую среду?

Ваш код отлично работает для меня.

 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
x=['A','B','C','D','E','F','G','H','I','J']
y=[47, 23, 27,  0, 82,  7, 46, 92, 36, 76]
plt.bar(x,y)
plt.xlabel('Categories')
plt.ylabel("Values")
plt.title('Categories Bar Plot')
plt.show()
 

выход:

участок бара

Комментарии:

1. Хорошо, большое спасибо, я постараюсь выключить и перезапустить все

2. ошибка довольно странная, так как «построение» букв должно работать (пытаться plt.bar(x,x) ), поэтому мой вопрос о версии matplotlib

3. Это было потому, что мне нужно использовать matplotlib 1.5.1, в разделе Я опубликовал свой обходной путь

4. Спасибо за предоставление обратной связи сообществу 😉

Ответ №2:

Оказывается, я использую matplotlib 1.5.1 и не могу обновить его по причинам, которые я не могу написать здесь. Но я написал обходной путь, которым хотел поделиться с сообществом:

 x1=['A','B','C','D','E','F','G','H','I','J']
N=0
x2=[]
for i in range(len(x1)):
    x2.append(N)
    N =1
y=[47, 23, 27,  0, 82,  7, 46, 92, 36, 76]
plt.bar(x2,y)
plt.xlabel('Categories')
plt.ylabel("Values")
plt.title('Categories Bar Plot')
plt.xticks(np.arange(0.5, len(x2) 0.5), list(x1), rotation=90, size = '10')
plt.show()