数据可视化:pyecharts 的几个实例

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

官方文档:https://pyecharts.org/#/

开发环境

  • Windows 10
  • Python 3.7.3
  • pyecharts 1.3.1

基本图表 Pie:饼图

from pyecharts import options as opts
from pyecharts.charts import Page, Pie# 也可以把以下数据存储成 json 格式
data = [{'value': 20, 'name': '计算机与信息工程学院'},{'value': 12, 'name': '物理与电子科学学院'},{'value': 17, 'name': '政法与公共管理学院'},{'value': 21, 'name': '材料科学与工程学院'},{'value': 59, 'name': '数学与统计学学院'},{'value': 22, 'name': '马克思主义学院'},{'value': 9, 'name': '资源环境学院'},{'value': 18, 'name': '生命科学学院'},{'value': 16, 'name': '化学化工学院'},{'value': 22, 'name': '历史文化学院'},{'value': 29, 'name': '外国语学院'},{'value': 34, 'name': '教育学院'},{'value': 20, 'name': '文学院'},{'value': 6, 'name': '商学院'},
]value_list = []
for a_dict in data:  # 遍历数据列表for _, value in a_dict.items():  # 获取字典的值value_list.append(value)
value_num = value_list[::2]  # 获取列表中从0开始每两个取一次的数据
value_str = value_list[1::2]  # 获取列表中从1开始每两个取一次的数据def pie_base():piemap = (Pie().add('', [list(z) for z in zip(value_str, value_num)],  # 数据格式:[(a,b),(c,d),]center=["50%","60%"]  # 饼图位置).set_global_opts(title_opts=opts.TitleOpts(title='Pie-饼图', pos_top='100'))  # 标题及位置.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c}'))  # 标签及格式)piemap.width = '1000px'  # 图宽piemap.height = '600px'  # 图高piemap.render('data/pie.html')  # 存储pie_base()

以上代码会生成一个 html 文件,浏览器打开后如下:

基本图表 Pie radius:环

import json
from pyecharts import options as opts
from pyecharts.charts import Page, Pie# 这里就是把数据存储成 json 格式,再获取
with open('data/pie_data.json', 'r', encoding='utf-8') as f:data = json.load(f)# json 数据格式如下:
'''
[{"value": 20,"name": "计算机与信息工程学院"},{"value": 12,"name": "物理与电子科学学院"},{"value": 17,"name": "政法与公共管理学院"},{"value": 22,"name": "马克思主义学院"}
]
'''value_list = []
for a_dict in data:  # 遍历数据列表for _, value in a_dict.items():  # 获取字典的值value_list.append(value)
value_num = value_list[::2]  # 获取列表中从0开始每两个取一次的数据
value_str = value_list[1::2]  # 获取列表中从1开始每两个取一次的数据def pie_base():piemap = (Pie().add('', [list(z) for z in zip(value_str, value_num)],  # 数据格式:[(a,b),(c,d),]center=["50%","60%"],   # 饼图位置radius=['40%','75%'])   # 设置内圆半径和外圆半径.set_global_opts(title_opts=opts.TitleOpts(title='Pie-圆环饼图', pos_top='100'))  # 标题及位置.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c}'))  # 标签及格式)piemap.width = '1000px'  # 图宽piemap.height = '600px'  # 图高piemap.render('data/pie_radius.html')  # 存储pie_base()

以上代码会生成一个 html 文件,浏览器打开后如下:

基本图表 pie rosetype:南丁格尔图

import json
from pyecharts import options as opts
from pyecharts.charts import Page, Piewith open('data/pie_data.json', 'r',encoding='utf-8') as f:data = json.load(f)value_list = []
for a_dict in data:  # 遍历数据列表for _, value in a_dict.items():  # 获取字典的值value_list.append(value)
value_num = value_list[::2]  # 获取列表中从0开始每两个取一次的数据
value_str = value_list[1::2]  # 获取列表中从1开始每两个取一次的数据def pie_rosetype() -> Pie:piemap = (Pie().add("",[list(z) for z in zip(value_str, value_num)],radius=["30%", "75%"],  # 图的内圆半径和外圆半径center=["20%", "50%"],  # 图的位置占屏幕比例,相对宽度和高度rosetype="radius",  # radius:扇区圆心角展现数据的百分比,半径展现数据的大小# area:所有扇区圆心角相同,仅通过半径展现数据大小label_opts=opts.LabelOpts(is_show=False),  # 是否展示标签).add("",# 系列数据项,格式为 [(key1, value1), (key2, value2)][list(z) for z in zip(value_str, value_num)],radius=["30%", "75%"],center=["70%", "50%"],rosetype="area",).set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图",  # 标题及位置pos_top='500')))piemap.width = '1100px'piemap.height = '600px'piemap.render('data/pie_rosetype.html')  # 存储pie_rosetype()

以上代码会生成一个 html 文件,浏览器打开后如下:

基本图表 sunburst:旭日图

import json
from pyecharts import options as opts
from pyecharts.charts import Sunburstdef sunburst_official() -> Sunburst:with open("data/sun_data.json", "r", encoding="utf-8") as f:data = json.load(f)# 以上获取的数据格式如下:'''[{"value": 20,"name": "计算机与信息工程学院","children": [{"value": "7","name": "软件工程","children":[{"value":"2","name":"软件工程01班"},{"value":"5","name":"软件工程02班"}]},{"value": "3","name": "软件工程产业 "},{"value": "3","name": "信息安全 "},{"value": "2","name": "通信工程 "},{"value": "2","name": "通信工程产业 "},{"value": "2","name": "计算机科学与技术"},{"value": "1","name": "电子信息工程 "}]},{"value": 12,"name": "物理与电子科学学院","children": [{"value": "2","name": "物理学 "},{"value": "1","name": "光电信息与工程 "},{"value": "3","name": "微电子科学与工程"},{"value": "6","name": "电子科学与技术 "}]},]'''sun_map = (Sunburst(init_opts=opts.InitOpts(width="1000px", height="600px")).add("",data_pair=data,  # 数据Sequencehighlight_policy="ancestor",  # 当鼠标移动到一个扇形块时,可以高亮相关的扇形块。# 'ancestor':高亮该扇形块和祖先元素radius=[0, "95%"],  # 图的半径,第一项是内半径,第二项是外半径sort_="null",  # # 扇形块根据数据 value 的排序方式,# 如果未指定 value,则其值为子元素 value 之和。# 'null':表示不排序,使用原始数据的顺序levels=[    # 图多层级配置{},{"r0": "15%","r": "35%","itemStyle": {"borderWidth": 2},"label": {"rotate": "tangential"},},{"r0": "35%", "r": "70%", "label": {"align": "right"}},{"r0": "70%","r": "72%","label": {"position": "outside", "padding": 3, "silent": False},"itemStyle": {"borderWidth": 3},},],).set_global_opts(title_opts=opts.TitleOpts(title="Sunburst-示例"))# 标签内容格式器,支持字符串模板和回调函数两种形式,# 字符串模板与回调函数返回的字符串均支持用 \n 换行。# 示例:formatter: '{b}: {@score}' .  参考官网.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}")))sun_map.render('data/sun_map.html')sunburst_official()

以上代码会生成一个 html 文件,浏览器打开后如下:

地理图表 Geo:地理坐标系

from pyecharts import options as opts
from pyecharts.charts import Geo, Page
from pyecharts.globals import ChartType, SymbolType# 定义地理图
geo = Geo()
# 画布宽度,高度
geo.width = '800px'
geo.height = '600px'
# 全局设置
geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=100),title_opts=opts.TitleOpts(title='Geo-流向图'))
# 添加主题,中国地图,填充边界颜色
geo.add_schema(maptype='china',itemstyle_opts=opts.ItemStyleOpts(border_color="#111",color='#454545'))
# 添加系列
geo.add('',[('成都',10),('武汉',20),('西安',30),('南京',40),('深圳',50)],type_=ChartType.EFFECT_SCATTER,   # 散点图一种形式label_opts=opts.LabelOpts(is_show=True),  # 不显示设置False)
geo.add('',[('北京',100),('上海',100)],type_=ChartType.HEATMAP,    # 散点图的一种形式label_opts=opts.LabelOpts(is_show=False),)# 设置流向
geo.add('流向图',[('上海','成都'),('上海','南京'),('上海','深圳'),('上海','武汉'),('北京','西安'),('北京','成都'),('北京','南京'),('北京','武汉')],type_=ChartType.LINES,linestyle_opts=opts.LineStyleOpts(curve=0.3,color="#63B8FF"),effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW,symbol_size=6,color='#FF7F00'),)# 生成图片
geo.render('data/geo.html')

以上代码会生成一个 html 文件,浏览器打开后如下:

地理图表 Map:地图

from pyecharts.charts import Map
from pyecharts import options as optscity_value = [("北京",11),("天津",12),("河北",13),("山西",14),("内蒙古",15),('辽宁',21),('吉林',22),('黑龙江',23),("上海",31),('江苏',32),('浙江',33),('安徽',34),('福建',35),('江西',36),('山东',37),('河南',41),('湖北',42),('湖南',43),('广东',44),('广西',45),('海南',46),("重庆",50),('四川',51),('贵州',52),('云南',53),('西藏',54),('陕西',61),('甘肃',62),('青海',63),('宁夏',64),('新疆',65),('香港',81),('澳门',82),('台湾',83),]m = Map()
m.add('中国行政代码地图',city_value,maptype='china',label_opts=opts.LabelOpts(is_show=True))
m.render('data/map.html')

以上代码会生成一个 html 文件,浏览器打开后如下:

树形图表 TreeMap:矩形树图

import json
from pyecharts.charts import TreeMap
from pyecharts import options as optswith open('data/treemap_data.json', 'r',encoding='utf-8') as f:data = json.load(f)# 以上获取的数据格式如下:'''[{"value": 20,"name": "计算机与信息工程学院","children": [{"value": "7","name": "软件工程"},{"value": "3","name": "软件工程产业 "},{"value": "3","name": "信息安全 "},{"value": "2","name": "通信工程 "},{"value": "2","name": "通信工程产业 "},{"value": "2","name": "计算机科学与技术"},{"value": "1","name": "电子信息工程 "}]},{"value": 12,"name": "物理与电子科学学院","children": [{"value": "2","name": "物理学 "},{"value": "1","name": "光电信息与工程 "},{"value": "3","name": "微电子科学与工程"},{"value": "6","name": "电子科学与技术 "}]},]'''treemap = (TreeMap().add('各专业体育检测抽样人数', data,pos_left='center',  # 主图的位置tooltip_opts=opts.TooltipOpts(is_show=True),# 子标签展示,大小,字体label_opts=opts.LabelOpts(is_show=True, font_size=14,font_family='serif', vertical_align='top')).set_global_opts(title_opts=opts.TitleOpts(title='矩形树图\n'),  # 图左上角:标题legend_opts=opts.LegendOpts(is_show=True),  # 图上面中间:图例toolbox_opts=opts.ToolboxOpts(is_show=True), # 图右上角:工具箱# tooltip_opts=opts.TooltipOpts(is_show=True),  # 图上:提示框# visualmap_opts=opts.VisualMapOpts(is_show=True),  # 图右下角:视觉映射)
)# 图的宽高
treemap.width='1000px'
treemap.height='600px'
#  保存为html文件
treemap.render('data/treemap.html')

以上代码会生成一个 html 文件,浏览器打开后如下:

小结

更多实例内容见官方文档:https://pyecharts.org/#/

数据可视化:pyecharts 的几个实例相关推荐

  1. python饼状图教程_Python数据可视化:饼状图的实例讲解

    使用python实现论文里面的饼状图: 原图: python代码实现: # # 饼状图 # plot.figure(figsize=(8,8)) labels = [u'Canteen', u'Sup ...

  2. python动态图表变化_Python数据可视化 pyecharts实现各种统计图表过程详解

    Python数据可视化 pyecharts实现各种统计图表过程详解 发布时间:2020-09-10 04:53:26 来源:脚本之家 阅读:78 1.pyecharts介绍 Echarts是一款由百度 ...

  3. 第二波:HTML+CSS+JavaScript数据可视化大屏平台模板实例10大通用模板,面向各行各业

    第二波:HTML+CSS+JavaScript数据可视化大屏平台模板实例10大通用模板,面向各行各业. HTML+CSS+JS数据可视化大屏平台模板实例11-设备监控 HTML+CSS+JS数据可视化 ...

  4. 第一波:HTML+CSS+JavaScript数据可视化大屏平台模板实例10大通用模板,面向各行各业

    HTML+CSS+JavaScript数据可视化大屏平台模板实例10大通用模板.欢迎关注: HTML+CSS+JS数据可视化大屏平台模板实例1 HTML+CSS+JS数据可视化大屏平台模板实例2-视频 ...

  5. 第三波:HTML+CSS+JavaScript数据可视化大屏平台模板实例11大通用模板,面向各行各业。

    第三波:HTML+CSS+JavaScript数据可视化大屏平台模板实例11大通用模板,面向各行各业. HTML+CSS+JS数据可视化大屏平台模板实例21-大数据可视化通用模板 HTML+CSS+J ...

  6. 数据可视化--pyecharts绘图

    pyecharts 是一个用于生成 Echarts 图表的类库. Echarts 是百度开源的一个数据可视化 JS 库.主要用于数据可视化. 要使用pyecharts绘制地图,首先需要安装一下几个地图 ...

  7. python做动态折线图_Python数据可视化 pyecharts实现各种统计图表过程详解

    1.pyecharts介绍 Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echarts生成数据可视化的类库,可实现柱状图,折线图,饼状图,地图 ...

  8. python数据可视化的特点_Python数据可视化 pyecharts实现各种统计图表过程详解

    1.pyecharts介绍 Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echarts生成数据可视化的类库,可实现柱状图,折线图,饼状图,地图 ...

  9. Python数据可视化-Pyecharts不同的主题风格

    本文介绍 PyEcharts主题风格配置 内容,通过内置提供了 10+ 种不同的风格,另外也提供了便捷的定制主题的方法. Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设 ...

  10. 时间序列数据可视化:Pyecharts日历图

    Hallo,各位小伙伴大家好啊!这个专栏是用来分享数据处理以及数据可视化的一些常见操作,以及自己的一些学习笔记,希望能给大家带来帮助呀!感兴趣的小伙伴也欢迎私信或者评论区交流呀! 以下可视化的数据分别 ...

最新文章

  1. hdu4096(模拟)
  2. POJ-1364 King 差分约束
  3. Spark(4)——transformation、action、persist
  4. 机器学习实战(九)树回归
  5. cookie/storage
  6. Linux—文件命令之touch命令
  7. android frida 检测_Android 逆向 | Frida 是万能的吗? 检测 Frida 的几种办法
  8. 七牛上传图片问题总结
  9. keras调用自己训练的模型,并去掉全连接层
  10. HTTP、HTTP2.0、SPDY、HTTPS 你应该知道的一些事
  11. 华为测试岗实习生面试回顾
  12. linux下配置内网ip
  13. lbw的spring超级资源
  14. Python_001_旅游评论情感倾向性分析
  15. notepad++设置背景颜色为豆沙绿
  16. tensorboard使用界面介绍以及使用方法(看这篇就够了,都有源码可以直接测试)
  17. WebDAV之葫芦儿·派盘+人升
  18. (一)框架搭建,前端路由设置,自定义寻找指定路径(Django+Vue+Mysql,数据库管理数据分析网站)
  19. 鲲鹏系列服务器,鲲鹏系列云服务器
  20. ORA-00257: archiver error. Connect internal only, until freed 处理方法

热门文章

  1. “人文素养老师”——马小平老师
  2. 苹果新品“翻车”后,官方回应来了!
  3. 2015图片处理软件排行榜
  4. 激流勇进,在创新中求发展
  5. android发送数据短信,如何发送和接收数据短信
  6. 微软Silverlight简介
  7. ssh设置免密登录后登录仍需密码可能的原因,以及 ssh 出问题或的调试方法
  8. 实时3D图形技术的进化历史2
  9. 三维CAD软件项目即将验收 3D打印获突破
  10. 亚马逊雨林大火为何上不了热搜?我们都被某些媒体给忽悠了!