mpld3: stackplot вызывает ошибку сериализации - PullRequest
0 голосов
/ 22 сентября 2018

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

Массив NumPy не поддерживает сериализацию в формате JSON

Traceback (последний вызов был последним): File "main.py ", строка 32, в файле mpld3.show ()" /usr/local/lib/python3.6/site-packages/mpld3/_display.py ", строка 358, в шоу html = fig_to_html (fig, ** kwargs) Файл "/usr/local/lib/python3.6/site-packages/mpld3/_display.py", строка 251, в fig_to_html figure_json = json.dumps (figure_json, cls = NumpyEncoder), файл "/ usr /local / Cellar / python / 3.6.5 / Frameworks / Python.framework / Versions / 3.6 / lib / python3.6 / json / init .py ", строка 238, в дампах ** кВт) .encode(obj) Файл "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py", строка 199, в кодировании chunks = self.Файл iterencode (o, _one_shot = True) "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py", строка 257, витератор возвращение _iterencode (o, 0) файл "/ usr / local / lib / python3.6 / site-packages / mpld3 / _display.py ", строка 138, по умолчанию возвращает json.JSONEncoder.default (self, obj) файл" /usr/local/Cellar/python/3.6.5/Frameworks/Python.Framework / Versions / 3.6 / lib / python3.6 / json / encoder.py ", строка 180, по умолчанию o. class . name ) TypeError: Объект типа 'ndarray'не поддерживает сериализацию в формате JSON

Вот мой код для печати;plt.show () работает нормально.Это только кажется, что проблема со стековым графиком, обычный график в порядке.

# get x,y,labels

# do plotting
fig, (ax1, ax2) = plt.subplots(2, 1)
#fig, (ax1) = plt.subplots(1, 1)
for yval in range(len(y)):
    ax1.plot(x, y[yval], label=labels[yval])

ax1.legend(loc='upper left')
ax1.ticklabel_format(useOffset=False)

ax2.stackplot(x, y, labels=labels)
ax2.legend(loc='upper left')
ax2.ticklabel_format(useOffset=False)

#plt.show()
mpld3.show()

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 22 сентября 2018

Похоже, что это дубликат: MPLD3 с ошибкой Python

, который может вам понадобиться, поскольку mpld3 больше не поддерживается.

...