如何在html页面中打印matplotlib图

时间:2018-05-25 12:53:57

标签: python html mpld3

我试图在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>'`

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

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

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

mpld3具体

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

第三个想法

您似乎错误地导入了mlpd3。根据{{​​3}}页面,它看起来只是import mlpd3而不是来自matplotlib。