Как исправить объект типа ndarray, который не сериализуем JSON при использовании mpld3?

Python mpld3 '.show ()' дает мне эту ошибку «Объект типа ndarray не сериализуем JSON»

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

Использование Matplotlib версии 3.1.3

Использование mpld3 версии 0.3

Я также использую Anaconda и выполнил обновление conda --all и обновление conda --all и все еще получаю эту ошибку.

Вот код для воспроизведения ошибки. [Это очень просто]

import matplotlib.pyplot as plt
import mpld3

fig, ax = plt.subplots()
x, y = [[1,2,3],[4,3,2]]

ax.scatter(x, y)

mpld3.show()

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

Приведенный выше код — это всего лишь пример с голыми костями, показывающий, что в самом создании сюжета не используются массивы numpy. Это никоим образом не является представлением того, что я пытаюсь сделать [простым способом показать фигуру matplotlib на веб-странице]. Я знаю, что matplotlib использует numpy внутри, поэтому должна быть какая-то проблема с mpld3, анализирующим словарь свойств фигуры.


person Carl    schedule 29.05.2020    source источник
comment
Почему вы не используете plt.show()? Какова цель mpld3 здесь?   -  person Sheldore    schedule 29.05.2020
comment
Моя цель — показать сюжет на веб-странице. В противном случае, да, я бы использовал plt.show()   -  person Carl    schedule 29.05.2020


Ответы (1)


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

Чтобы исправить это, я удалил mpld3 (который я установил с помощью pip) и переустановил его с помощью conda. Тогда это сработало. Проверка версии с помощью списка conda дает мне те же версии обоих пакетов, что и у вас. Я помню, как читал, что не следует играть как с pip, так и с conda для управления пакетами python. Я всегда забываю применить это правило.

Надеюсь, это исправит это для вас.

person Rcarl    schedule 08.06.2020
comment
Привет, Ркарл! Я никогда не использовал какие-либо установки pip при использовании anaconda, если только это не было необходимо, однако, поскольку вы смогли заставить что-то работать, я отмечу ваш ответ как правильный, поскольку я отказался от mpld3 и вместо этого решил использовать Plotly. - person Carl; 09.06.2020