美文网首页
Python3.7 保存pyecharts的图片。网页打开ec

Python3.7 保存pyecharts的图片。网页打开ec

作者: Ziger丶 | 来源:发表于2019-10-28 17:17 被阅读0次

    背景:需要直接保存echarts生成图片而不是html。
    目标:将html处理为png格式。

    首先参考官方渲染图片地址,其中提供了两种方式 snapshot-selenium与snapshot-phantomjs


    1、查看源码

    1.1、生成图表
    from pyecharts import options as opts
    from pyecharts.charts import Bar
    from pyecharts.render import make_snapshot
    
    def bar_chart() -> Bar:
        c = (
            Bar()
            .add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
            .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
            .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
            .reversal_axis()
            .set_series_opts(label_opts=opts.LabelOpts(position="right"))
            .set_global_opts(title_opts=opts.TitleOpts(title="Bar-测试渲染图片"))
        )
        return c
    
    bar.render(r'C:\Users\Administrator\Desktop\echarts\one_tset.html')
    
    1.1、selenium方式
    from snapshot_selenium import snapshot
    
    make_snapshot(snapshot, bar_chart().render(), "bar0.png")
    
    1.2、phantomjs方式
    from snapshot_phantomjs import snapshot
    
    make_snapshot(snapshot, bar_chart().render(), "bar0.png")
    

    2、准备工作

    由于当时尝试时,单一方式一直保存不了,所以干脆两种方式全部安装。结果能够正常保存了。
    两种方法一起准备,就是下载selenium与phantomjs。

    2.1、安装snapshot-selenium & selenium
    pip install  selenium
    pip install snapshot-selenium
    
    2.2、安装snapshot-phantomjs & phantomjs
    pip install snapshot-phantomjs
    

    下载地址http://phantomjs.org/download.html
    添加路径
    找到phantomjs文件下的bin文件夹,将其路径设为系统path路径:

    路径设置

    3、报错

    3.1、下载chromedriver

    下载完成后运行时报错:'chromedriver_X64.exe' executable needs to be in PATH

    查询相关资料后发现需要下载chromedriver,chromedriver下载地址

    需要下载对应chrome版本的chromedriver,ChromeDriver与Chrome版本对应参照表。或者直接在下载页面中查看notes.txt查看对应的版本。

    查看对应版本
    3.2、配置环境变量

    将chromedriver.exe拷贝至谷歌浏览器目录(如 C:\Program Files\Google\Chrome\Application)以及python根目录(C:\Python3.7)。
    将谷歌浏览器环境变量添加到path(C:\Users\HD003\AppData\Local\Google\Chrome\Application)。 至此,就可以解决 ‘chromedriver’ executable needs to be in PATH问题了。


    4、成功运行代码

    from pyecharts.charts import Bar
    from pyecharts import options as opts
    from pyecharts.globals import ThemeType
    from pyecharts.render import make_snapshot
    
    from snapshot_selenium import snapshot
    #--------------------------------------------
    bar = (
        Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
        .add_xaxis(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"])
        .add_yaxis("降雨量", [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3])
        .add_yaxis("蒸发量", [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3])
        .set_global_opts(title_opts=opts.TitleOpts(title="柱状图", subtitle="一年的降雨量与蒸发量"))
        # 或者直接使用字典参数
        # .set_global_opts(title_opts={"text": "主标题", "subtext": "副标题"})
    )
    bar.render(r'C:\Users\Administrator\Desktop\echarts\one_tset.html')
    
    make_snapshot(snapshot, bar.render(), r'C:\Users\Administrator\Desktop\bar.png')
    

    4、内网打开html打开为空白页

    由于在内网开发,生成的html页面打开为空白页。
    notepad++查看生成的文件:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Awesome-pyecharts</title>
                <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>
            <script type="text/javascript" src="https://assets.pyecharts.org/assets/themes/wonderland.js"></script>
    
    </head>
    

    发现其中的echarts.min.js文件为下载链接,内网无法获取,所以显示为空白页。

    4.1、解决方式

    下载echarts.min.js:
    echarts官网下载,选取所需的内容后下载。
    将echarts.min.js与生成的html放入同一文件夹中。

    修改html的头,如下

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>ECharts</title>
        <!-- 引入 echarts.js -->
        <script src="echarts.min.js"></script>
    </head>
    

    然后再次打开html文件,显示正常。

    保存为图片:

    make_snapshot(snapshot, r"C:\Users\Administrator\Desktop\one_tset.html", r"C:\Users\Administrator\Desktop\bar.png")
    

    相关文章

      网友评论

          本文标题:Python3.7 保存pyecharts的图片。网页打开ec

          本文链接:https://www.haomeiwen.com/subject/qmvbvctx.html