首页 > 解决方案 > 如何在 html 页面中打印 matplotlib 图

问题描述

我正在尝试在 HTML 页面(python -cgi)中使用 Matplotlib 绘制堆叠图。我有以下脚本

`#!/usr/bin/python 
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt, mpld3
data = {'title1': {'SA':20, 'TA':10}, 'title2':{'FA':10, 'MA':20, 
'NA':30}}
grap=pd.DataFrame(data).T.plot(kind='bar', stacked=True,figsize= . 
(16,18))
mpld3.fig_to_html(grap)
print '</body>'
print '</html>'`

但是,当我尝试在网络浏览器中打开脚本时,它显示错误。如果我删除“import mpdl3”,脚本可以工作,但看不到图像。

任何人都可以帮助如何将情节嵌入到 html 页面中。

提前致谢。

标签: pythonhtmlmpld3

解决方案


一种替代方法是使用类似的东西将matplotlib图保存为图像plt.savefig("/file/path/something.jpg"),然后像这样引用它,<img src="/file/path/something.jpg" />因为图本身正在渲染为图形而不是打印语句所在的stdout。

基本上你误解了 stdout 和 figure 之间的区别。Figure 是一个 python 实用程序,它打开一个窗口并显示图像(在本例中为 pyplot 图),而标准输出是 python 代码的文本输出。

mpld3 特定

所以我更多地研究了mpld3。保存和使用 img 实际上并不允许按照您要查找的顺序进行实际集成。它将允许您在网页中显示图表,但会剥夺交互性。我的猜测是,这里真正的问题是 apache 正在查看不同的 python 安装。检查并查看是否在用户或系统级别安装了 mpld3,并查看正在使用哪个 python install apache。

第三个想法

看起来您错误地导入了 mlpd3。根据这个页面,它看起来像你只是import mlpd3而不是来自 matplotlib。


推荐阅读