mpld3生成的轴属性值无法序列化为JSON

时间:2018-03-31 05:42:28

标签: matplotlib python-3.5 mpld3

我正在使用matplotlib进行散点图,并尝试使用mpld3在HTML中绘制它。转换为dict时figure会生成一个属性edgewidths,其值类型为array 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属性,当漂亮的打印字典

{'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)

0 个答案:

没有答案