python - 运行时错误: main thread is not in main loop using Matplotlib with Django

标签 python django matplotlib django-templates html-injections

我正在创建一个 Matplotlib 图形,以在 Django 应用程序的 HTML 模板中显示。我将此图保存在静态文件下,然后使用保存的 .png 加载 img 标记,从而将其发送到 HTML。 在获得对该图的引用后,我在 views.py 中执行此操作。

        # Get analysis visualization chart
        figure = analyser.visualize_tweets(emotions)

        # Save figure in static folder as png
        figure.savefig('static/analysis_figures/figure.png')

        # Inject html with figure path
        response['analysis_figure_path'] = 'analysis_figures/figure.png'

return render(request, 'landing_page/index.html', response)

我的 HTML 是这样的:

<img src={% static analysis_figure %} alt="">

但是,当我的 views.py 中的函数被第二次调用时(如果调用一旦一切正常)。 为了防止出现此错误,我将 Matplotlib 图形保存到 main() 中,以便在主线程中运行,然后在原始函数中调用它。这修复了错误,但阻止了我的 HTML 重新加载,因此每次用户提交查询时,新图形都会显示在前一个图形上,而不会删除前一个图形。 对任何问题有什么想法吗?

最佳答案

我认为这篇文章解释了该怎么做: How to clean images in Python / Django?

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

如下所述:https://matplotlib.org/faq/howto_faq.html#matplotlib-in-a-web-application-server

为防止新图形显示在前一个图形之上,请使用: plt.close()/figure.close()

关于python - 运行时错误: main thread is not in main loop using Matplotlib with Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50157759/

相关文章:

python - 如何增加 matplotlib 和 pandas 中的图像大小?

python - Apache/Django/mod_wsgi - [Errno 13] 权限被拒绝 :

python - Jupyter 笔记本有文档结构图扩展吗?

python - Pandas : Map the list value in a column to dictionary based on group

python - 包 "within"模块

python - 在 POST 响应中发送 OpenCV 图像

django - 使用基于类的 View 包含类别 slug 和帖子 slug 的 URL

python - 将 x 轴刻度更改为自定义字符串

python - 使用样式表删除 matplotlib 图中的顶部和左侧轴

python - 如何让 setuptools 安装来自另一个来源的软件包,该软件包在 pypi 上也可以使用相同的版本号?