美文网首页pythonpython
Python3.7 通过html绘制数据可视化图表

Python3.7 通过html绘制数据可视化图表

作者: Ziger丶 | 来源:发表于2019-12-31 16:43 被阅读0次

    背景:生成数据分析报告时,需要后期自动生成统计图,插入报告中。但其他几个可视化工具没有合适的图表,查询相关资料后,发现一个网页可以生成所需图表。
    目标:内网环境,将生成的html转化成图片,并自动插入报告中。


    1、所需图表

    报告中需要插入一个类金字塔形的柱状图,如下所示:


    所需图片

    找了一下echarts,seaborn中都没有需要的样式,就很烦。
    无意中发现,AntV G2中的这个图貌似可以使用的样子,它长这样:

    AntV G2
    如果只是单次使用,直接改数据截图就可以用了。但是本次报告需要定期更新,所以需要自动化导入数据并自动截图。

    2、内网环境打开html

    由于本次是在内网环境运行的,所有先复制html文件在内网打开,结果是空白网页。这是由于网页内部JS未能成功渲染。
    打开html文件,找到js访问请求地址,如下所示:

     <div id="container" />
            <script src="https://gw.alipayobjects.com/os/antv/pkg/_antv.g2-3.5.11/dist/g2.min.js"></script>
            <script src="https://gw.alipayobjects.com/os/antv/pkg/_antv.data-set-0.10.2/dist/data-set.min.js"></script>
     <script>
    

    然后复制地址,下载这两个js文件,将文件与此html放入同一路径下,将上述代码修改为

    <script src="./g2.min.js"></script>
    <script src="./data-set.min.js"></script>
    

    然后在内网本地打开,就可以正常显示了。


    3、修改插入数据

    插入数据就很简单了,直接按照统计逻辑获取数据组,根据html上本身的要求转化成json或者数组。


    数据样式

    要主要的是其中颜色的替换和数据显示的形式。


    4、html转化成pdf

    安装使用webdriver,输入本地html路径,PDF输出路径,就可以将网页转化成图片了。

    import webdriver
    
    def Html_to_png (url , save_fn ):
        '''
        将html文件转化为png
        '''
        option = webdriver.ChromeOptions()
        option.add_argument('--headless')
        option.add_argument('--disable-gpu')
        option.add_argument("--window-size=1920,1080")
        option.add_argument("--hide-scrollbars")
         
        driver = webdriver.Chrome(chrome_options=option)
         
        driver.get(url)
        print(driver.title)
    
    最终成图效果

    相关文章

      网友评论

        本文标题:Python3.7 通过html绘制数据可视化图表

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