Matplotlib ValueError - PullRequest
       2

Matplotlib ValueError

1 голос
/ 07 мая 2020

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

    for i in range(int(user_input)):
        summ = randint(1,10)+randint(1,10)+randint(1,10)+randint(1,10)
        x.append(summ)   
    print(x) 
    counts = np.bincount(np.array(x))
    fig, ax = plt.subplots()
    ax.bar(range(41), counts, width=0.8, align='center')
    ax.set(xticks=range(1,41), xlim=[0, 41])
    plt.show()

Я получаю следующую ошибку: я не могу понять, почему?

ValueError: несоответствие формы: объекты не могут транслироваться в одну форму

журнал указывает на эту строку:

ax.bar(range(41), counts, width=0.8, align='center')

Спасибо

edit: ответ @ olenscki работает, но итоговый сюжет беспорядочный, как вы можете видеть на картинке, любая дополнительная помощь приветствуется:

edit 2: как было предложено @ Оленского, проблема решена.

1 Ответ

0 голосов
/ 07 мая 2020

В вызове ax.bar вы передаете функции 2 параметра: диапазон 41 и массив counts. Бывает, что диапазон (41) не всегда имеет одинаковую размерность, диапазон всегда будет иметь 41 число, а счетчик может иметь только 20 или 60 значений. Это решит вашу проблему:

ax.bar(range(len(counts)), counts, width=0.8, align='center')

При этом вы ограничите диапазон, чтобы он имел тот же размер, что и counts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...