获取属性错误:模块'matplotlib.pyplot'没有属性'canvas'

时间:2019-03-18 08:00:51

标签: django python-3.x matplotlib django-templates attributeerror

    plt.figure(figsize=(8, 8))

    sns.heatmap(conf_matrix, annot=True, fmt="d");
    plt.title("Confusion matrix")
    plt.ylabel('True class')
    plt.xlabel('Predicted class')

    html_fig = mpld3.fig_to_html(plt,template_type='general')
    plt.close(plt)

HTML文件中的代码以获取图像:

    <div id="fig_container">
    {{ div_figure|safe }}
</div>

使用PythonDjango的最新版本。执行属性时显示错误

  

模块'matplotlib.pyplot'没有属性'canvas'

我是新手,无法解决该错误。请帮忙!!!

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题。您现在可能已经解决了问题,但是无论如何我都在发布答案。

这里的重点是mpld3与matplotlib中使用的 fig 对象一起使用。像这样:

fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4])
html_fig = mpld3.fig_to_html(fig)

因此,对于您的解决方案,您应该从Seaborn图中获取图形对象。可以通过这种方式完成(带有ax参数):

fig, ax = plt.subplots()
sns.heatmap(conf_matrix, annot=True, fmt="d", ax=ax)
html_fig = mpld3.fig_to_html(fig)

或者这样:

fig = sns.heatmap(conf_matrix, annot=True, fmt="d").get_figure()
html_fig = mpld3.fig_to_html(fig)

如果您想使用mpld3在Django项目中一般包含seaborn图和matplotlib,我建议查看this question