Advertisement

Pyecharts实践:数据可视化大屏

阅读量:

一、引言

在当今大数据时代背景下

二、Pyecharts简介

Pyecharts是以Python为编程语言开发的一款开放源代码 visualize工具,它不仅能够输出ECharts的JSON数据表示,还通过JavaScript技术实现图形展示功能。ECharts作为一个基于JavaScript构建的数据可视化解决方案,能够创建多种类型的可视化图表,如折线图、柱状图、饼图以及散点图等常见类型。

三、Pyecharts实践案例

随后,我们将利用多种实践案例来帮助你逐步掌握Pyecharts的具体应用方法。在本节中,我们将采用包括线型面积图、液态图、地图类型的图表以及堆叠柱状图四种数据可视化工具来进行展示与分析。这些图表设计将会帮助你更好地理解如何在Pyecharts中实现二维数据矩阵的直观呈现效果。

1.数据准备与清洗

在做数据可视化之前,在做数据分析前的第一步任务是在做数据清理与归整的过程中进行

使用pyecharts库来生成一个堆叠柱状图(Bar)

导入需要用到的库

复制代码
 from pyecharts import options as opts #用于设置图表选项

    
 from pyecharts.charts import Bar #用于创建柱状图
    
 from pyecharts.faker import Faker #类用于生成模拟数据

创建一个柱状图对象

复制代码
 Bar = (

    
     Bar() 
    
     .add_xaxis(Faker.choose())
    
     .add_yaxis("商家A", Faker.values(), stack="stack1")
    
     .add_yaxis("商家B", Faker.values(), stack="stack1")
    
     .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    
     .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠数据(全部)"))
    
     
    
 )

最终通过.mnemonic_notebook().render_line_charts()来实现数据可视化。从而可以在当前工作环境中直观地查看生成的可视化结果。无需先导出为HTML文件再进行查看。

复制代码
    line.render_notebook() #使用.render_notebook()渲染图表

得到的图像如下

2.使用pyecharts库来生成一个线型面积图(Line)

导入需要用到的库

复制代码
 import pyecharts.options as opts

    
 from pyecharts.charts import Line #用于创建线型图表
    
 from pyecharts.faker import Faker  #用于生成模拟数据

创建一个线性图表对象并渲染图像

复制代码
 Line = (

    
     Line() #创建一个线型图表对象 
    
     .add_xaxis(Faker.choose())
    
     .add_yaxis("商家A", Faker.values(), is_smooth=True)
    
     .add_yaxis("商家B", Faker.values(), is_smooth=True)
    
     .set_series_opts(
    
     areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
    
     label_opts=opts.LabelOpts(is_show=False),
    
     )
    
     .set_global_opts(
    
     title_opts=opts.TitleOpts(title="Line-面积图(紧贴 Y 轴)"),
    
     xaxis_opts=opts.AxisOpts(
    
         axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
    
         is_scale=False,
    
         boundary_gap=False,
    
     ),
    
     )
    
     
    
 )
    
 Line.render_notebook()

渲染后图像如下:

3.使用pyecharts库来生成一个液态图(Liquid)

导入模块库

复制代码
 from pyecharts import options as opts

    
 from pyecharts.charts import Liquid #用于创建线型图表
    
 from pyecharts.globals import SymbolType #用于定义图表的形状类型

创建一个地图对象并渲染Liquid图表

复制代码
 Liquid = (

    
     Liquid()
    
     .add("lq", [0.3, 0.7], is_outline_show=False, shape=SymbolType.DIAMOND)
    
     .set_global_opts(title_opts=opts.TitleOpts(title="Liquid-Shape-Diamond"))
    
     
    
 )
    
 Liquid.render_notebook()

查看渲染后的图

4.使用pyecharts库来生成一个中国地图(Map)

导入用到的库

复制代码
 from pyecharts import options as opts

    
 from pyecharts.charts import Map
    
 from pyecharts.faker import Faker

创建一个地图对象并渲染创建一个地图对象并渲染map图表

复制代码
 map = (

    
     Map()
    
     .add("中国地图", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
    
     .set_global_opts(title_opts=opts.TitleOpts(title=""))
    
     
    
 )
    
 map.render_notebook()

得下图

四、创建一个带有当前日期的大屏标题

复制代码
 from pyecharts.charts import Pie

    
 from pyecharts import options as opts
    
 from datetime import datetime
    
 now_time = datetime.now().strftime('%Y-%m-%d') # 获取当前时间
    
 big_title = (
    
     Pie() # 不画图,只显示一个标题,用来构成大屏的标题
    
     .set_global_opts(
    
     title_opts=opts.TitleOpts(title="大屏标题",
    
                               title_textstyle_opts=opts.TextStyleOpts(font_size=40,
    
 #                                                                           color='#FFFFFF',
    
                                                                      ),
    
                               subtitle = f'截至:{now_time}',
    
                               pos_top=10
    
                              )
    
     )
    
 )
    
 big_title.render_notebook()

所得图表如下

整合多个图表

为更清晰地呈现数据间的关联关系, 我们可能要考虑如何将多个图表集成到同一屏幕上. Pyecharts该库允许在一个页面上同时显示多幅图表, 通过Page类功能, 可以构建布局网格并嵌入各图组件.

复制代码
 from pyecharts.charts import Page

    
 page = Page()
    
 page.add(
    
     big_title, #大屏标题
    
     Bar, #堆叠柱状图
    
     Line, #线型面积图
    
     Liquid, #液态图
    
     map #地图
    
 )
    
 page.render('page.html') # 将页面渲染为一个 HTML 文件,文件名为 'page.html',可以用任何 Web 浏览器打开它来查看图表

导入用于解析HTML和XML文档的Python库

复制代码
    from bs4 import BeautifulSoup 

定制图表样式

在创建基础图表后

复制代码
 with open("page.html", "r+", encoding='utf-8') as html:

    
     html_bf = BeautifulSoup(html, 'lxml')
    
     divs = html_bf.select('.chart-container') # 根据css定位标签,选中图像的父节点标签
    
     divs[0]["style"] = "width:420px;height:55px;position:absolute;top:20px;left:350px;border-style:dashed;border-color:#444444;border-width:0px;"
    
     divs[1]["style"] = "width:420px;height:274px;position:absolute;top:100px;left:30px;border-style:solid;border-color:#444444;border-width:2px;"
    
     divs[2]["style"] = "width:420px;height:274px;position:absolute;top:100px;left:470px;border-style:solid;border-color:#444444;border-width:2px;"
    
     divs[3]["style"] = "width:420px;height:274px;position:absolute;top:400px;left:30px;border-style:solid;border-color:#444444;border-width:2px;"
    
     divs[4]["style"] = "width:420px;height:274px;position:absolute;top:400px;left:470px;border-style:solid;border-color:#444444;border-width:2px;"
    
     body = html_bf.find("body") # 根据标签名称定位到body标签
    
     body["style"] = "background-color:white;" # 修改背景颜色
    
     html_new = str(html_bf) # 将BeautifulSoup对象转换为字符
    
     html.seek(0, 0) # 光标移动至
    
     html.truncate() # 删除光标后的所有字符内容
    
     html.write(html_new) # 将由BeautifulSoup对象转换得到的字符重新写入html文件
    
     html.close()

五、发布与分享

最终我们会将整个大屏发布到Web应用程序中,并同时将其分发给其他用户查看。Pyecharts能够将图表生成为HTML文件,并因此我们可以将其整合到Web页面上,并提供给别人下载查看。

六、总结与展望

基于以下实践案例分析可知

全部评论 (0)

还没有任何评论哟~