0

我正在使用matplotlib并尝试使用mpld3在 HTML 中绘制它来绘制散点图。figure转换为 dict 时,会生成一个edgewidths具有值类型数组的属性,该数组具有单个值元素,无法1.序列json.dumps化为 JSON 类型。我不确定matplotlib axes我需要更改哪个属性来解决此问题,或者这些库中的任何一个是否需要设置一些初始化属性?也是mpld3呈现为 HTML 的最佳后端吗?

示例代码

fig, ax = pyplot.subplots()
ax.scatter(a, b)

fig_json = json.dumps(mpld3.fig_to_dict(fig), skipkeys=True)

漂亮打印dict时有问题的dict属性

{'axes': [{'axes': [{'fontsize': 10.0,
                 'grid': {'alpha': 1.0,
                          'color': '#D3D3D3',
 ...
        'axesbgalpha': None,
 ...
       'collections': [{'alphas': [None],
 ...
                        'edgewidths': array([1.]), <--- This property

例外

fig_json = json.dumps(mpld3.fig_to_dict(fig), skipkeys=True)
File "/usr/lib/python3.5/json/__init__.py", line 237, in dumps
 **kw).encode(obj)
File "/usr/lib/python3.5/json/encoder.py", line 198, in encode
 chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python3.5/json/encoder.py", line 256, in iterencode
 return _iterencode(o, 0)
File "/usr/lib/python3.5/json/encoder.py", line 179, in default
 raise TypeError(repr(o) + " is not JSON serializable")
TypeError: array([1.]) is not JSON serializable

使用的依赖项

  • matplotlib (2.1.2)
  • mpld3 (0.3)
4

0 回答 0