由于python初学,所以分为两个步骤来进行,1.首先把excel的图表导出成.html文件。2.然后把html文件转换成png文件。其中使用的工具包为pyecharts(绘图),pandas(数据访问),imgkit(网页转图片)。
快乐的一天从导包开始,首先使用了pycharm的file–>settings导包,然后快乐地头皮发麻地安装失败了,于是还是选择了去下包来自己安装。
pip install *之后就成功了,于是就开始造车之旅。首先导入你日思夜想的三方包:
from pyecharts import options as opts
from pyecharts.charts import Bar
import pandas as pd
data = pd.read_excel(" ",sheet_name="Sheet1")
while(i<(data.shape[0]+1)):
c = (
Bar(init_opts=opts.InitOpts(width="800px",height="400px"))
.add_xaxis(data.编号[:i].tolist()[i-1:])
.add_yaxis("PH",data.PH[:i].tolist()[i-1:])
...
.set_global_opts(title_opts=opts.TitleOpts(title=data.编号[:i][i-1]+"的数据",pos_left="left"))
.render("html/柱状图"+str(i)+".html")
)
i = i + 1
循环遍历excel表的行,然后根据行数决定生成多少个html文件,由于要求是一个png文件上就一个柱状图,于是用html与png一一对应放置。
看起来不错,接下来就是用html转成png了,如果能用canvas画布造车还是用原生canvas造,用三方包(比如我这就是用imgkit)造车总有些奇奇怪怪的东西,比如我这个就是运行到一半,它不干活了,转个1000来张图片就中途罢工了。陷入沉思。
cfg = imgkit.config(wkhtmltoimage = "你wkhtmltoimage放置的位置")
f_list = os.listdir("你html放置的目录")
for file in f_list:
#你要找的文件的后缀名
file_name = file[:file.find(".html")]
with open("打开文件的目录"+file,encoding="utf-8") as f:
imgkit.from_file(f,"输出文件的目录"+file_name+".png",config=cfg)
f.seek(0,0)
成了,然后这车子开一半就罢工了。