图文讲解Python数据可视化神器
点击上方“程序IT圈”,选择“置顶公众号”
每天早晨8点50分,准点开车打卡
我们都知道python上的一款可视化工具 matplotlib , 但是它是静态的。后来发现了 pyecharts 模块,简直好用到不行,可视化类型非常多,它是基于 Echarts 开发的。
Echarts 是百度开源的一个数据可视化 JS 库,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 就诞生了。
下面带大家快速了解 pyecharts 以及基本使用方法:
✨ 特性
简洁的 API 设计,使用如丝滑般流畅,支持链式调用
囊括了 30+ 种常见图表,应有尽有
支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
可轻松集成至 Flask,Django 等主流 Web 框架
高度灵活的配置项,可轻松搭配出精美的图表
详细的文档和示例,帮助开发者更快的上手项目
多达 400+ 地图,为地理数据可视化提供强有力的支持
✨ 安装
1pip install pyecharts
注意:pyecharts 共有两个版本,v0.5.X 和 V1.0.X 间完全不兼容,且v0.5.X版本作者已经不维护了,请使用V1.0.X
示例数据
pyecharts 给我们提供了示例数据,后面的图表示例的数据均来自 Faker 类,Faker 类的定义如下:
1class Faker:2 clothes = ["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]3 drinks = ["可乐", "雪碧", "橙汁", "绿茶", "奶茶", "百威", "青岛"]4 phones = ["小米", "三星", "华为", "苹果", "魅族", "VIVO", "OPPO"]5 fruits = ["草莓", "芒果", "葡萄", "雪梨", "西瓜", "柠檬", "车厘子"]6 animal = ["河马", "蟒蛇", "老虎", "大象", "兔子", "熊猫", "狮子"]7 cars = ["宝马", "法拉利", "奔驰", "奥迪", "大众", "丰田", "特斯拉"]8 dogs = ["哈士奇", "萨摩耶", "泰迪", "金毛", "牧羊犬", "吉娃娃", "柯基"]9 week = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
10 week_en = "Saturday Friday Thursday Wednesday Tuesday Monday Sunday".split()
11 clock = (
12 "12a 1a 2a 3a 4a 5a 6a 7a 8a 9a 10a 11a 12p "
13 "1p 2p 3p 4p 5p 6p 7p 8p 9p 10p 11p".split()
14 )
15 visual_color = [
16 "#313695",
17 "#4575b4",
18 "#74add1",
19 "#abd9e9",
20 "#e0f3f8",
21 "#ffffbf",
22 "#fee090",
23 "#fdae61",
24 "#f46d43",
25 "#d73027",
26 "#a50026",
27 ]
28 months = ["{}月".format(i) for i in range(1, 13)]
29 provinces = ["广东", "北京", "上海", "江西", "湖南", "浙江", "江苏"]
30 guangdong_city = ["汕头市", "汕尾市", "揭阳市", "阳江市", "肇庆市", "广州市", "惠州市"]
31 country = [
32 "China",
33 "Canada",
34 "Brazil",
35 "Russia",
36 "United States",
37 "Africa",
38 "Germany",
39 ]
40 days_attrs = ["{}天".format(i) for i in range(30)]
41 days_values = [random.randint(1, 30) for _ in range(30)]
42
43 def choose(self) -> list:
44 return random.choice(
45 [
46 self.clothes,
47 self.drinks,
48 self.phones,
49 self.fruits,
50 self.animal,
51 self.dogs,
52 self.week,
53 ]
54 )
55
56 @staticmethod
57 def values(start: int = 20, end: int = 150) -> list:
58 return [random.randint(start, end) for _ in range(7)]
59
60 @staticmethod
61 def rand_color():
62 return random.choice(
63 [
64 "#c23531",
65 "#2f4554",
66 "#61a0a8",
67 "#d48265",
68 "#749f83",
69 "#ca8622",
70 "#bda29a",
71 "#6e7074",
72 "#546570",
73 "#c4ccd3",
74 "#f05b72",
75 "#444693",
76 "#726930",
77 "#b2d235",
78 "#6d8346",
79 "#ac6767",
80 "#1d953f",
81 "#6950a1",
82 ]
83 )
常用的图表类型
Bar:柱状图/条形图
柱状图对应的模块是 Bar
除此之外可以设置全局配置和系列配置项。配置项都是基于 options
示例代码:
1# coding: utf-82from example.commons import Faker3from pyecharts import options as opts4from pyecharts.charts import Bar56def bar_base():78 bar = Bar(init_opts=opts.InitOpts(page_title="bar页面")) # 设置html页面标题9 # bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) # 设置x轴的参数
10
11 bar.add_xaxis(Faker.choose())
12 bar.add_yaxis("A", Faker.values())
13 bar.add_yaxis("B", Faker.values())
14
15 # 设置全局配置项,可选
16 bar.set_global_opts(opts.TitleOpts(title="主标题", subtitle="副标题"))
17 # render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
18 bar.render("bar.html") # 也可以自己指定文件名
19
20if __name__ == "__main__":
21 bar_base()
运行代码后会在当前目录生成一个 ”bar.html“ 的文件,我们在浏览器中打开它。效果图如下:
生成的页面支持-点击取消显示某 Series
除了上述的使用方法之外,pyecharts 所有方法均支持链式调用!
翻转XY轴
代码如下:
1def bar_reversal_axis() -> Bar:23 # pyecharts 所有方法均支持链式调用。4 c = (5 Bar(init_opts=opts.InitOpts(page_title="bar页面"))6 .add_xaxis(Faker.choose())7 .add_yaxis("商家A", Faker.values())8 .add_yaxis("商家B", Faker.values())9 .reversal_axis()
10 .set_global_opts(toolbox_opts=opts.ToolboxOpts()) # 设置工具箱配置项
11 .set_series_opts(label_opts=opts.LabelOpts(position="right")) # 系列配置项
12 .set_global_opts(title_opts=opts.TitleOpts(title="Bar-翻转 XY 轴")) # 全局配置项
13 )
14 return c
15
16
17if __name__ == "__main__":
18 bar_reversal_axis().render("bar.html")
效果图如下:
部分堆叠数据
同个类目轴上系列配置相同的 stack 值可以堆叠放置
例如堆叠放置A,B的代码如下:
1def bar_stack1() -> Bar:2 c = (3 Bar()4 .add_xaxis(Faker.choose())56 # 数据堆叠,同个类目轴上系列配置相同的 stack 值可以堆叠放置。7 # stack: Optional[str] = None,8 .add_yaxis("A", Faker.values(), stack="stack1")9 .add_yaxis("B", Faker.values(), stack="stack1")
10 .add_yaxis("C", Faker.values())
11 .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
12 .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠数据(部分)"))
13 )
14 return c
区域缩放配置项
1def bar_datazoom_slider() -> Bar:2 c = (3 Bar(init_opts=opts.InitOpts(page_title="bar页面"))4 .add_xaxis(Faker.days_attrs)5 .add_yaxis("商家A", Faker.days_values)6 .set_global_opts(7 title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-水平)"),8 datazoom_opts=[opts.DataZoomOpts(type_="slider",)]9 )
10 )
11 return c
区域缩放配置项的设置方法在 DataZoomOpts 类中,我们可以点进去查看源码:
其中,主要用到的参数含义如下:
1 type_: str = "slider", # 组件类型,可选 "slider", "inside"
2 # 拖动时,是否实时更新系列的视图。如果设置为 false,则只在拖拽结束的时候更新。
3 is_realtime: bool = True,
4
5 # 布局方式是横还是竖。可选值为:'horizontal', 'vertical'
6orient: str = "horizontal",
知道参数的含义后我们可以来试试效果
比如我们要将区域缩放布局改为竖,将 orient 定义为 vertical 即可,代码就不展示,可以自己动手试试!
HeatMap:热力图
热力图主要通过颜色去表现数值的大小,必须要配合 visualMap 组件使用。
直角坐标系上必须要使用两个类目轴。
热力图使用的方法函数是 add_yaxis,下面是函数的用法说明:
1def add_yaxis(2 # 系列名称,用于 tooltip 的显示,legend 的图例筛选。3 series_name: str,45 # Y 坐标轴数据6 yaxis_data: Sequence,78 # 系列数据项9 value: Sequence,
10
11 # 是否选中图例
12 is_selected: bool = True,
13
14 # 使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
15 xaxis_index: Optional[Numeric] = None,
16
17 # 使用的 y 轴的 index,在单个图表实例中存在多个 y 轴的时候有用。
18 yaxis_index: Optional[Numeric] = None,
19
20 # 标签配置项,参考 `series_options.LabelOpts`
21 label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
22
23 # 标记点配置项,参考 `series_options.MarkPointOpts`
24 markpoint_opts: Union[opts.MarkPointOpts, dict, None] = None,
25
26 # 标记线配置项,参考 `series_options.MarkLineOpts`
27 markline_opts: Union[opts.MarkLineOpts, dict, None] = None,
28
29 # 提示框组件配置项,参考 `series_options.TooltipOpts`
30 tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
31
32 # 图元样式配置项,参考 `series_options.ItemStyleOpts`
33 itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
34)
35
其中series_name, yaxis_data, value 是三个必传参数
示例代码如下:
1import random2from example.commons import Faker3from pyecharts import options as opts4from pyecharts.charts import HeatMap567def heatmap_base() -> HeatMap:8 value = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]9 c = (
10 HeatMap()
11 .add_xaxis(Faker.clock)
12 .add_yaxis("series", Faker.week, value)
13 .set_global_opts(title_opts=opts.TitleOpts(title="HeatMap-基本示例"),
14 visualmap_opts=opts.VisualMapOpts(), )
15 )
16
17 return c
18
19
20if __name__ == "__main__":
21 heatmap_base().render("heatMap.html")
WordCloud:词云图
词云图用的的方法函数是 add,使用方法如下:
1def add(2 # 系列名称,用于 tooltip 的显示,legend 的图例筛选。3 series_name: str,45 # 系列数据项,[(word1, count1), (word2, count2)]6 data_pair: Sequence,78 # 词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选9 shape: str = "circle",
10
11 # 单词间隔
12 word_gap: Numeric = 20,
13
14 # 单词字体大小范围
15 word_size_range=None,
16
17 # 旋转单词角度
18 rotate_step: Numeric = 45,
19
20 # 提示框组件配置项,参考 `series_options.TooltipOpts`
21 tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
22)
23
其中series_name, data_pair, shape 是三个必传参数
示例代码如下:
1from pyecharts.charts import WordCloud2from pyecharts import options as opts34words = [5 ("火箭", 10000),6 ("勇士库里", 8888),7 ("在你写这个教程之前,我已经会用了", 6181),8 ("哈登", 6386),9 ("金州拉文", 5055),
10 ("杜兰特", 6467),
11 ("戳眼", 2244),
12 ("NBA", 1868),
13 ("季后赛", 1484),
14 ("约老师", 1112),
15 ("利拉德", 865),
16 ("双卡双待", 847),
17 ("字母歌MVP", 5582),
18 ("卡哇伊", 555),
19 ("猛龙", 550),
20 ("大帝", 462),
21 ("西蒙斯不投三分", 366),
22 ("JB", 360),
23 ("科尔垃圾", 282),
24 ("格林公式", 273),
25 ("欧文", 2650),
26]
27
28
29def wordcloud_base() -> WordCloud:
30 c = (
31 WordCloud()
32 .add("", words, word_size_range=[20, 50], shape="diamond", word_gap=10)
33 .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-shape-diamond"))
34 )
35 return c
36
37
38if __name__ == "__main__":
39 wordcloud_base().render("wordCloud.html")
效果图如下:
保存为图片
前面我们讲的几种图形生成方法,最后都保存成 html文件,pyecharts 还提供了保存为图片的方式
需要安装 snapshot_selenium,同时需要将浏览器驱动保存路径 cheromdriver.exe 加入到环境变量中
1pip install snapshot_selenium
示例代码如下:
1# coding: utf-82import random34from pyecharts.charts import WordCloud5from pyecharts import options as opts6from snapshot_selenium import snapshot as driver7from pyecharts.render import make_snapshot89words = [
10 ("火箭", 10000),
11 ("勇士库里", 8888),
12 ("在你写这个教程之前,我已经会用了", 6181),
13 ("哈登", 6386),
14 ("金州拉文", 5055),
15 ("杜兰特", 6467),
16 ("戳眼", 2244),
17 ("NBA", 1868),
18 ("季后赛", 1484),
19 ("约老师", 1112),
20 ("利拉德", 865),
21 ("双卡双待", 847),
22 ("字母歌MVP", 5582),
23 ("卡哇伊", 555),
24 ("猛龙", 550),
25 ("大帝", 462),
26 ("西蒙斯不投三分", 366),
27 ("JB", 360),
28 ("科尔垃圾", 282),
29 ("格林公式", 273),
30 ("欧文", 2650),
31]
32
33
34def wordcloud_base() -> WordCloud:
35 c = (
36 WordCloud()
37 .add("", words, word_size_range=[20, 50], shape="diamond", word_gap=10)
38 .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-shape-diamond"))
39 )
40 return c
41
42
43if __name__ == "__main__":
44 make_snapshot(driver, wordcloud_base().render(), "wordcloud.png")
45 # wordcloud_base().render("wordCloud.html")
最后会在当前目录生成一张 wordcloud.png 的图片
总结
1.根据自己想制作的图形,导入相关的包
2.进行图表的基础设置,创建图表对象
3.需要了解该图表对象下面的函数中参数的含义,及其使用方法
4.配置项主要是在 options中进行配置,有全局配置项和系列配置项,需要了解配置项下面对象含义使用方法
5.利用render()方法来报存图表
pyecharts 还有许多好玩的 3D图表 和 地图图表,大家有兴趣的可以继续深入学习!
觉得对你有用,就帮忙点个赞呗…
黑客必用神器,网络抓包工具
互联网的公司没有中年人
推荐11个挺常用的IDEA插件
SpringBoot中如何干掉过多的 if else!
成就更好的自己,就是不停地做减法
公众号氛围活跃的技术微信群
点个"
在看
",告诉我你曾来过
图文讲解Python数据可视化神器相关推荐
- 图文讲解Python数据可视化神器 !
我们都知道python上的一款可视化工具 matplotlib , 但是它是静态的.后来发现了 pyecharts 模块,简直好用到不行,可视化类型非常多,它是基于 Echarts 开发的. Echa ...
- 一学就会,20000字深度讲解 Python 数据可视化神器 Plotly
作为 Python 的新一代数据可视化绘图库,和matplotlib等传统绘图库相比,plotly具有以下优点: 简洁易用: 作为一只小透明,plotly的图表对象就像一个嵌套dict, 可以通过直接 ...
- 20000字深度讲解 Python 数据可视化神器 Plotly
本文我们按照如下3 part来深入浅出地讲解plotly的使用方法.喜欢记得收藏.关注.点赞 part1: 深入原理, 本文第一节和第二节,分别介绍 go和px 的设计思想和绘图原理. part2: ...
- Python 数据可视化神器分享:pyecharts
Python 数据可视化神器分享:pyecharts Python 数据可视化神器分享:pyecharts 我们都知道python上的一款可视化工具matplotlib,而前些阵子做一个Spark项目 ...
- 【Plotly】python数据可视化神器——绘制折线图
Plotly简介 Plotly是用于机器学习.数据挖掘等领域的数据可视化包. 其图标视觉效果简洁大气,可互动性强,成为我工作中进行数据可视化的一大利器,接下来我们就从最简单的折线图,带领大家逐渐入门p ...
- python数据可视化神器,我就服它
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...
- Python 数据可视化神器—Pyecharts
今日分享主题:Python Pyecharts模块实现数据动态可视化分析 前言 Echarts 是百度开源的一款数据可视化 JS 工具,数据可视化类型十分丰富,但是得通过导入 js 库在 Java W ...
- python数据可视化神器--pyecharts 快速入门
前言 本文首发于本人公众号[Python编程与实战] 我们都知道python上的一款可视化工具 matplotlib , 但是它是静态的.后来发现了 pyecharts 模块,简直好用到不行,可视化类 ...
- Python数据可视化神器Plotly:小白指南篇
先插一个我觉得特别好的教程 或者说是范例? 简单易懂的plotly范例 超详细的教程 这边还是安利一下百度echart这个应用,数据可视化很强大,很炫酷,想了解的话可以去官网了解以下 Plotly简介 ...
- 最强最炫的Python数据可视化神器,没有之一!
作者丨Will Koehrsen https://towardsdatascience.com/the-next-level-of-data-visualization-in-python-dd6e9 ...
最新文章
- 消除图片在ie中缓存而无法更新的问题
- 三,ES6中需要注意的特性(重要)
- linux 学习总结
- vux 实现多栏滚动
- exe程序获得外部传入命令行方法
- 成员函数 静态变量做默认参数_Scala系列 (二)Scala的独有特性提高开发效率学会之后玩转函数式与OOP!!...
- 深度学习——你应该掌握的数学知识
- 数据库-第三范式及BCN
- 计算机技术分,计算机技术专业那么多,你分得清吗?
- 测试管理 | 测试经理定义和实施测试度量
- 3.4 SE55表维护生成器
- mysql表的遍历_MySQL 全表遍历
- 74.iptables规则备份和恢复,firewalld
- 学界 | Hinton提出的经典防过拟合方法Dropout,只是SDR的特例
- 现有Android项目引入ReactNative--九步大法
- ios html 图片旋转了,解决移动端iOS下上传图片被旋转问题。
- IDEA项目启动配置
- 晶体(crystal)和晶振(oscillator)的区别
- 2021年起重机械指挥新版试题及起重机械指挥模拟考试
- 移动端h5页面软键盘弹出后 背景图片被顶上去
热门文章
- matlab怎么画函数线,请问matlab怎么画常数函数,比如同时画x=300和x=400这两条线...
- Excel 计算各种物料 平均采购价格
- UI设计师都用什么工具?
- 比较lowB的Excel初始使用,
- jQuery获取元素定位位置:给td添加选中样式
- Bzoj5109: [CodePlus 2017]大吉大利,晚上吃鸡!
- Hive 面试题 | 连续登陆天数统计
- Nginx基础之错误页面配置/流量控制/访问控制/变量/监控/HTTPS配置/性能优化
- python爬京东联盟_Python+Selenium+Chrome抓取京东商品信息
- python interactive 清空内存_Python 进程内存增长解决方案