【问题标题】:mpld3 error : AttributeError: 'list' object has no attribute 'canvas'mpld3 错误:AttributeError:“列表”对象没有属性“画布”
【发布时间】:2019-08-09 08:53:43
【问题描述】:

我正在尝试使用 mpld3 库在我的浏览器上绘制 Matplotlib 数据。 但我遇到的问题是我收到以下错误:

if fig.canvas is None: AttributeError: 'list' object has no attribute 'canvas'

这些是我导入的 mpld3 对象。

import matplotlib.pyplot as plt,mpld3
from mpld3 import save_json, fig_to_html, plugins

这是我将图形保存为 HTML 的代码。

plt.subplots(1, 1, figsize=(8, 2))
ecg = X
fig=plt.figure()
alt = np.arange(len(ecg))/125
fig= plt.plot(alt,ecg)
mpld3.save_html(fig,"test.html")
mpld3.fig_to_html(fig,template_type="simple")
mpld3.disable_notebook()
mpld3.show()

如果我没有将数据保存在 html 文件中,我会得到这个数字。 html 文件已创建但为空,并且控制台上显示上述错误。

请帮忙。非常感谢任何帮助

下图是它的样子。

【问题讨论】:

  • 你看到fig实际上是什么了吗?也许是figs 的列表?
  • 我用 matplotlib @EdChum 得到的图形更新了问题

标签: python html python-3.x matplotlib mpld3


【解决方案1】:

根据here 的文档,我能够将绘图发送到 html 文件,如下所示:

import matplotlib.pyplot as plt,mpld3
from mpld3 import save_json, fig_to_html, plugins, save_html
import numpy as np

X = 'x'

fig, ax = plt.subplots(1, 1, figsize=(8, 2))
ecg = X
fig = plt.figure()
alt = np.arange(len(ecg))/125
lines = ax.plot(alt,ecg)
mpld3.plugins.connect(fig, mpld3.plugins.LineLabelTooltip(lines[0]))
mpld3.fig_to_html(fig)
mpld3.save_html(fig,"test.html")

# mpld3.disable_notebook()
mpld3.show()

你的行

fig=plt.figure()

fig= plt.plot(alt,ecg)

不使用 figure 方法,这就是您收到“画布”错误的原因。

我不确定你所有的数据是什么,你可能不需要使用插件方法,但是切换保存html的顺序,将fig转换为html,似乎已经解决了一些问题。

希望这会有所帮助。

【讨论】:

  • 现在好了。我没有收到任何错误。但是打开的html页面现在是空白的
  • 如果我可以将数据存储在 json 文件中。这将解决我的问题。但问题是创建了 json 文件。但是是空的
  • @AbnitChauhan,创建的 HTML 文件不完整。我想我需要添加必要的元素。
猜你喜欢
  • 2021-07-05
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2018-01-16
  • 2016-05-14
  • 2016-12-21
  • 2022-01-23
相关资源
最近更新 更多