Getting attribute error : module 'matplotlib.pyplot' has no attribute 'canvas'

淺唱寂寞╮ 提交于 2020-03-05 03:56:38

问题


    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)

Code in HTML file to fetch the image :

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

Using latest versions of Python and Django. On executing the attribute error is displayed

module 'matplotlib.pyplot' has no attribute 'canvas'

I am new to it and unable to resolve the error. Please help!!!


回答1:


I had a similar issue. You probably have solved the problem by now, but anyway I'm posting an answer.

The main point here is that mpld3 works with the fig object used in matplotlib. Like this:

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

So for your solution you should get the figure object from your seaborn plot. It can be done either this way (whatch the ax argument):

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

Or this way:

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

If you want to include seaborn plots and matplotlib in general in django projects using mpld3 I'd recommend to view this question



来源:https://stackoverflow.com/questions/55216855/getting-attribute-error-module-matplotlib-pyplot-has-no-attribute-canvas

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!