600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 数据可视化之Pyecharts制作酷炫图表

数据可视化之Pyecharts制作酷炫图表

时间:2020-04-25 05:07:54

相关推荐

数据可视化之Pyecharts制作酷炫图表

python 擅于数据处理,echarts 是百度开源的数据可视化项目,将二者结合起来,也就诞生了 pyecharts 。本文将从相关特性、版本安装、绘图步骤、图表示例、图表组合、应用总结等个6方面进行详细介绍,文章较长干货较多,建议先收藏再细看。获取完整源码见文末。

Pyecharts目录

一. 相关特性二. 版本安装三. 绘图步骤1. 先介绍一些用到的主要函数:2. 基本上所有的图表类型都是这样绘制的:四. 图表示例1. 柱状图2. 漏斗图3. 仪表盘4. 折线图5. 饼图(玫瑰图)6.地图示例7.热力图8. 雷达图9. 词云图10. 箱型图11. 散点-气泡图五. 图表组合12. Grid 图表组合13. Overlap图表组合14. Page 图表组合14. Timeline 图表组合六. 应用与总结

一. 相关特性

简洁的 API 设计,使用如丝滑般流畅,支持链式调用

囊括了 30+ 种常见图表,应有尽有支持主流 Notebook 环境,Jupyter

Notebook 和 JupyterLab

可轻松集成至 Flask,Django 等主流 Web 框架

高度灵活的配置项,可轻松搭配出精美的图表 详细的文档和示例,帮助开发者更快的上手项目

多达 400+地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

二. 版本安装

pyecharts 分为 v0.5.X 和 v1 两个大版本,v0.5 和 v1 间不兼容,v1 是一个新版本,并且二者代码差异较大。本文代码是基于 0.5.11版本。Windows 系统使用 win + R 命令输入 cmd ,执行以下代码即可安装。

安装 0.5.11 版本:

pip install pyecharts == 0.5.11

安装1.0.0版本:

pip install pyecharts == 1.0.0 #安装什么版本就==什么

如果下载较慢,可以换用下面方法:

pip install -i https://pypi.tuna./simple pyecharts == 0.5.11

另外,我们在使用地图时需要另外导入下面几个包:

世界各国:pip install echarts-countries-pypkg

中国省级:pip install echarts-china-provinces-pypkg

中国市级:pip install echarts-china-cities-pypkg

中国县级:pip install echarts-china-counties-pypkg

三. 绘图步骤

1. 先介绍一些用到的主要函数:

add() :主要方法,用于添加图表的数据和设置各种配置项

render() :默认在根目录下生成一个 render.html 文件,支持设置文件保存位置

show_config() :打印输出图表的所有配置项

2. 基本上所有的图表类型都是这样绘制的:

chart_name = Type() #初始化具体类型图表

add() #加数据及配置项,基本都在操作这个函数

render() #生成 .html文件,可设置文件类型

四. 图表示例

Pyecharts 支持多种基本图表,本文包含下列常用类型:

相关讲解小笨聪已在代码注释里,我们直接看代码即可。以下示例均是先代码后图表顺序。

1. 柱状图

from pyecharts import Bar #导入bar模块attr = ["音响", "电视", "相机", "Pad", "手机", "电脑"] #设置x轴数据v1 = [5, 20, 36, 10, 75, 90] #第一组数据v2 = [10, 25, 8, 60, 20, 80] #第二组数据bar = Bar("1.1.柱状图数据堆叠示例","我是副标题") #实例一个柱状图#bar.use_theme("macarons") # 指定图表显示的主题风格,后面会讲bar.add("京东", attr, v1,mark_point=['average'],is_stack=True) #用add函数往图里添加数据并设置is_stack为堆叠bar.add("淘宝", attr, v2, mark_point = ['max'], is_stack=True) #mark_point标记min,max,average, mark_line标记线bar.render("1.1.柱状图数据堆叠示例.html") #保存为html类型

bar = Bar("1.2.x 轴和 y 轴交换")bar.add("京东", attr, v1,is_convert=True)#is_convert设置为true即交换XY轴,但不知为什么纵坐标轴始终只显示数字bar.add("淘宝", attr, v2,is_convert=True) #很多人遇到这样的困惑,暂时未找到解决办法#bar.show_config() #显示图表的所有配置bar.render("1.2.柱状图x 轴和 y 轴交换.html")

import randomattr = ["{}天".format(i) for i in range(30)]v1 = [random.randint(1, 30) for _ in range(30)] #创建数据bar = Bar("1.3.柱状图伸缩示例",title_pos='center')#设置标题位置为centerbar.add("", attr, v1, is_label_show=True, is_datazoom_show=True) #设置datazoombar.render("1.3.柱状图缩放和滑动.html")

2. 漏斗图

from pyecharts import Funnel #导入漏斗图attr = ["音响", "电视", "相机", "Pad", "手机", "电脑"] value = [20, 40, 70, 80, 100, 140]funnel = Funnel("2.漏斗图示例",width=600, height=400, title_pos='center',title_top = 'bottom')funnel.add("商品",attr,value,is_label_show=True, #显示标签label_pos="inside", #标签位置 label_pos="outside", label_text_color="#fff", #颜色legend_orient="vertical",legend_pos="left",)funnel.render("2.漏斗图示例.html")

3. 仪表盘

from pyecharts import Gauge #和之前一样 ,导入相关绘图包gauge = Gauge("仪表盘示例",width=600, height=400) #标题gauge.add("确诊病例", "出院率",88) #数据#gauge.show_config()gauge.render("3.仪表盘.html")

4. 折线图

from pyecharts import Line #导入相关折线图attr = ["音响", "电视", "相机", "Pad", "手机", "电脑"] v1 = [5, 20, 36, 10, 30, 100]v2 = [55, 40, 16, 60, 45, 80] #设置数据line = Line("4.1.折线图示例") #创建一个实例line.add("京东", attr, v1, line_width = 3,line_color = 'red', #设置线宽,线颜色mark_point=["average",{"coord":["Pad",10],"name":"这是我标记的第1个点"}]) #添加数据和标记点line.add("淘宝", attr, v2, is_smooth=True, #使用光滑曲线#is_datazoom_show =True,mark_line=["max", "average"], #标记线mark_point=[{"coord":["电脑",80],"name":"这是我标记的第2个点"}])line.render("4.1.折线图示例.html")

from pyecharts import Linex = ['-{:0>2d}'.format(s) for s in range(1,13)]y1 = [5,10,26,30,35,30,20,26,40,46,40,50]y2 = [8,20,24,36,40,36,40,45,50,53,48,58]line = Line("4.2折线图","月销售总额",width = 700,height = 450)line.add(name = "京东", x_axis = x, y_axis = y1,#设置lineStyleline_width = 2,line_opacity = 0.5, # 透明度line_color = 'red',#设置markPoint\markLinemark_point = ['min','max'], #标记点mark_line = ['average'] #标记线)line.add(name = "淘宝", x_axis = x, y_axis = y2,#设置xyAxisis_xaxis_boundarygap = False, # x坐标刻度对准数据,而不是作为分类边界yaxis_min = 0,yaxis_max = 100, # 设置y坐标轴刻度范围#设置dataZoomis_datazoom_show = True, #显示 dataZoom控制条#设置lineStyleline_width = 3,line_type = 'dashed', # 线型,可以是solid,dashed,或者dotted#设置markPoint\markLinemark_point = [{"coord": ['-09', 60], "name": "/09销售目标"}, {"coord": ['-11', 80], "name": "/10销售目标"}] # 自定义标记点)line.render("4.2.折线图示例_详细设置.html")

5. 饼图(玫瑰图)

from pyecharts import Pieattr = ["音响", "电视", "相机", "Pad", "手机", "电脑"] v1 = [11, 12, 13, 30, 10, 40]pie = Pie("5.1.饼图示例" ,title_pos='center')pie.add("", attr, v1,#radius=[35,75],is_label_show=True,#显示标签legend_orient="vertical", legend_pos="right") #图例设置为垂直排列,右侧pie.render("5.1.饼图示例_环形.html")attr1 = ["音响", "电视", "相机", "Pad", "手机", "电脑"] v2 = [11, 12, 13, 10, 10, 10]v3 = [19, 21, 32, 20, 20, 33]pie1 = Pie("5.2.饼图-玫瑰图示例", title_pos='center', width=900)pie1.add("京东",attr1, v2,center=[17, 50], is_random=True, #中心坐标设置radius=[30, 75], #半径设置,则成为了圆环rosetype="radius", #加了这句代码,则按照占比正比于圆环半径显示)pie1.add("淘宝",attr1,v3,center=[65, 50],is_random=True,radius=[30, 75],rosetype="area", #按照占比正比于圆环面积显示is_label_show=True, #显示商品标签,如电脑:22.76is_legend_show=True,#显示图例legend_top="bottom", #图例在下方显示)pie1.render("5.2.饼图示例_玫瑰形.html")

6.地图示例

from pyecharts import Mapvalue = [155, 10, 66, 148, 33, 80, 190, 53, 49,67,120,190,78,45,120,91,34, 88, 168, 64, 82, 26, 72, 101, 66, 164, 152, 41, 79,132,45]attr = ["福建", "山东", "北京", "上海", "甘肃", "河南", "浙江", "吉林", "西藏","辽宁","江西","湖北","山西","黑龙江","新疆","内蒙古","云南","河北", "广东","湖南","四川", "安徽","青海","陕西","江苏","重庆","贵州","广西","宁夏","海南","天津"]map = Map("6.1.全国省份地图示例", width=800, height=550)map.use_theme("macarons") map.add("",attr,value,maptype="china", #设置中国is_visualmap=True, #设置地图可见 #is_label_show = True,visual_text_color="#000", #地图背景颜色visual_range=[1, 200], #设置图例范围 默认0-100visual_range_text=["低", "高"],#设置图例上下度量,默认 low high# is_piecewise=True, #去掉这个参数和下面的pieces则图例数值是连续显示的# pieces=[{"max": 200, "min": 161, "label": "高"},# {"max": 160, "min": 101, "label": "中"},# {"max": 100, "min": 0, "label": "低"},])map.render("6.1.全国省份地图.html")

from pyecharts import Mapvalue = [90, 60, 70, 80, 50, 47, 35, 21, 59, 48, 43]attr = ['杭州市', '金华市', '温州市', '宁波市', '衢州市','丽水市','湖州市','绍兴市','嘉兴市','台州市','舟山市']map = Map("6.2.浙江地图示例", width=800, height=550)map.add("", attr, value, maptype="浙江", #设置浙江省is_label_show = True, is_visualmap=True, visual_text_color="#000") map.render("6.2.浙江地图示例.html")

value = [95.1, 23.2, 43.3, 66.4, 88.5,23]attr= ["China", "Canada", "Brazil", "Russia", "United States","Janpan"]map = Map("6.3.世界地图示例", width=800, height=500)map.add( "",attr,value,maptype="world", #设置世界地图is_visualmap=True,visual_text_color="#000",is_map_symbol_show=False,visual_orient="horizontal" #设置图例为水平放置)map.render("6.3.世界地图示例.html")

7.热力图

from pyecharts import Geodata = [("海门", 9),("鄂尔多斯", 12),("招远", 12),("舟山", 12),("齐齐哈尔", 14),("盐城", 15),("赤峰", 16),("青岛", 18),("乳山", 18),("金昌", 19),("泉州", 21),("莱西", 21),("日照", 21),("胶南", 22),("南通", 23),("拉萨", 24),("云浮", 24),("梅州", 25),("文登", 25),("上海", 25),("攀枝花", 25),("威海", 25),("承德", 25),("厦门", 26), ("汕尾", 26),("潮州", 26),("丹东", 27),("太仓", 27),("曲靖", 27),("烟台", 28), ("福州", 29),("瓦房店", 30),("即墨", 30),("抚顺", 31),("玉溪", 31),("张家口", 31),("阳泉", 31),("莱州", 32),("湖州", 32),("汕头", 32),("昆山", 33),("宁波", 33), ("湛江", 33),("揭阳", 34),("荣成", 34),("连云港", 35),("葫芦岛", 35),("常熟", 36),("东莞", 36),("河源", 36),("淮安", 36),("泰州", 36),("南宁", 37),("营口", 37),("惠州", 37),("江阴", 37),("蓬莱", 37),("韶关", 38),("嘉峪关", 38),("广州", 38),("延安", 38),("太原", 39),("清远", 39),("中山", 39),("昆明", 39),("寿光", 40),("盘锦", 40),("长治", 41),("深圳", 41),("珠海", 42),("宿迁", 43),("咸阳", 43),("铜川", 44),("平度", 44),("佛山", 44),("海口", 44),("江门", 45),("章丘", 45),("肇庆", 46),("大连", 47),("临汾", 47),("吴江", 47),("石嘴山", 49),("沈阳", 50),("苏州", 50),("茂名", 50),("嘉兴", 51),("长春", 51),("胶州", 52),("银川", 52),("张家港", 52),("三门峡", 53),("锦州", 54),("南昌", 54),("柳州", 54),("三亚", 54),("自贡", 56),("吉林", 56),("阳江", 57),("泸州", 57),("西宁", 57),("宜宾", 58),("呼和浩特", 58),("成都", 58),("大同", 58),("镇江", 59),("桂林", 59),("张家界", 59),("宜兴", 59),("北海", 60),("西安", 61),("金坛", 62),("东营", 62),("牡丹江", 63),("遵义", 63),("绍兴", 63),("扬州", 64),("常州", 64),("潍坊", 65),("重庆", 66),("台州", 67),("南京", 67),("滨州", 70),("贵阳", 71),("无锡", 71),("本溪", 71),("克拉玛依", 72),("渭南", 72),("马鞍山", 72),("宝鸡", 72),("焦作", 75),("句容", 75),("北京", 79),("徐州", 79),("衡水", 80),("包头", 80),("绵阳", 80),("乌鲁木齐", 84),("枣庄", 84),("杭州", 84),("淄博", 85),("鞍山", 86),("溧阳", 86),("库尔勒", 86),("安阳", 90),("开封", 90),("济南", 92),("德阳", 93),("温州", 95),("九江", 96),("菏泽", 194),("合肥", 229),("武汉", 273),("大庆", 279)("邯郸", 98),("临安", 99),("兰州", 99),("沧州", 100),("临沂", 103),("南充", 104),("天津", 105),("富阳", 106),("泰安", 112),("诸暨", 112),("郑州", 113),("哈尔滨", 114), ("聊城", 116),("芜湖", 117),("唐山", 119),("平顶山", 119),("邢台", 119),("德州", 120),("济宁", 120),("荆州", 127),("宜昌", 130),("义乌", 132),("丽水", 133),("洛阳", 134),("秦皇岛", 136),("株洲", 143),("石家庄", 147),("莱芜", 148),("常德", 152),("保定", 153),("湘潭", 154),("金华", 157),("岳阳", 169),("长沙", 175),("衢州", 177),("廊坊", 193),]geo = Geo("全国主要城市空气质量热力图.html", "data from pm2.5", title_color="#fff",title_pos="center", width=800,height=550, background_color='#404a59')attr, value = geo.cast(data) # 换个方式读取数据

geo.add("", attr, value, visual_range=[0, 200], visual_text_color="#fff",type='effectScatter', symbol_size=15, is_visualmap=True)geo.render("7.1.全国主要城市空气质量热力图.html")

geo.add("", attr, value,visual_range=[0, 200], visual_text_color="#fff",type="scatter",effect_scale=5,symbol_size=15,is_visualmap=True)geo.render("7.2.全国主要城市空气质量热力图.html")

geo.add("", attr, value, is_visualmap=True, visual_range=[0, 300],visual_text_color='#fff',type="heatmap",)geo.render("7.3.全国主要城市空气质量热力图.html")

from pyecharts import GeoLines, Stylestyle = Style(title_pos = "center",width=800,height=500,background_color="#404a59")style_geo = style.add(is_label_show=True,line_curve=0.2,line_opacity=0.8,legend_text_color="#42A5F5",legend_pos="left",geo_effect_symbol="plane",geo_effect_symbolsize=15,label_color=['#42A5F5', '#BA22FF', '#46bee9'],label_pos="right",label_formatter="{b}",label_text_color="#FFFFFF",)data_guangzhou = [["武汉", "上海"],["武汉", "北京"],["武汉", "南京"], ["武汉", "成都"],["武汉", "郑州"],["武汉", "杭州"],["武汉", "厦门"],["武汉", "深圳"],["武汉", "西安"],["武汉", "贵阳"],["武汉", "乌鲁木齐"],["武汉", "长沙"],]geolines = GeoLines("7.4.出行线路示例", **style.init_style)geolines.add("从武汉出发", data_guangzhou, **style_geo)geolines.render("7.4.地理坐标系线图.html")

8. 雷达图

from pyecharts import Radarradar = Radar("8.雷达图", "一年的降水量与蒸发量",width=700,height=450)#由于雷达图传入的数据得为多维数据,所以这里需要做一下处理radar_data1 = [[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]]radar_data2 = [[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]]#设置column的最大值,为了雷达图更为直观,这里的月份最大值设置有所不同schema = [ ("Jan", 5), ("Feb",10), ("Mar", 10),("Apr", 50), ("May", 50), ("Jun", 200),("Jul", 200), ("Aug", 200), ("Sep", 50),("Oct", 50), ("Nov", 10), ("Dec", 5)]#传入坐标radar.config(schema)radar.add("降水量",radar_data1)#一般默认为同一种颜色,这里为了便于区分,需要设置item的颜色radar.add("蒸发量",radar_data2,item_color="#1C86EE")radar.render("8.雷达图.html")

9. 词云图

from pyecharts import WordCloudname = ['Python','C','C++','Matlab','R','Java','Php','Go','SQL','C#','.Net']value = [98,60,68,70,72,104,55,60,46,60,49]wordcloud = WordCloud(width=500, height=500)wordcloud.add("", name, value,shape = "diamond",word_size_range=[20,70]) #设置大小、形状wordcloud.render("9.词云图.html")

10. 箱型图

from pyecharts import Boxplotx =['1班','2班','3班','4班']y1=[78, 98, 56, 78, 90.0, 45, 78, 20, 87, 86, 74, 89, 94]y2=[89, 82, 45, 67, 68, 78.0, 79, 98, 71, 56, 78, 81, 80]y3=[90, 80, 60, 89, 76, 73.0, 72, 92, 89, 87, 65, 66, 76]y4=[82, 72, 55, 100, 90.0, 78, 69, 67, 87, 66, 78, 71, 82]box = Boxplot(title = '10.考试成绩箱型图',width = 700,height = 450)# 预处理数据计算最大值,最小值,中位数以及上下四分位数y_prepared = box.prepare_data([y1,y2,y3,y4]) box.add(name = '',x_axis = x,y_axis = y_prepared)box.render("10.箱型图.html")

11. 散点-气泡图

from pyecharts import Scatterv1 = [5,20,35,50,65,80]v2 = [10,20,30,40,50,60]scatter = Scatter('11.散点-气泡示例图')scatter.add('A',v1,v2,symbol_size = 20)scatter.add('B',v1[::-1],v2, #v1[::-1]代表切片倒序is_visualmap = True, #显示滑动条symbol_size = 30, #显示图内标点大小vasual_range_size = [20,80]) #显示滑动范围scatter.render('11.散点气泡图.html')

五. 图表组合

我们经常需要在一个界面显示多个图表,也就是图表组合,pyecharts 支持四种图表组合,分别是:

Grid:可将多个类型的图表放在一个界面显示Overlap:可将多个类型的图表放在一张图中同时显示Page:将多个图表按顺序展示在一张网页中,里面可以放置其他三种类型的图表Timeline:将多个图表制成轮播图,动态播放

12. Grid 图表组合

from pyecharts import Bar, Line, Gridx = ["音响", "电视", "相机", "Pad", "手机", "电脑"] y1 = [5, 20, 36, 10, 75, 90]y2 = [10, 25, 8, 60, 20, 80]bar = Bar("柱状图示例",title_pos="30%")bar.use_theme("macarons") #指定图表主题为 macarons # 还不错的主题:shine halloween macarons romabar.add("京东", x, y1, is_stack=True)bar.add("淘宝", x, y2, is_stack=True,legend_top="7%",legend_pos="28%")line = Line("折线图示例", title_top="45%",title_pos="40%")x = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]y3 = [9, 10, 14, 13, 11, 13, 10]y4 = [1, 2, 3, 5, 3, 2, 0]line.add("卖出",x,y3,mark_point=["max", "min"],mark_line=["average"])line.add("买入",x,y4,mark_point=["max", "min"],mark_line=["average"],legend_top="52%",legend_pos="37%")grid = Grid(height = 600,width = 800) #设置总的宽和高#利用grid_bottom,grid_top,grid_left,grid_right四个参数控制子图的相对位置#通过调节上述四个参数,可以放置多个图表,当然相应的title、legend、label也需要相应改变才美观grid.add(bar, grid_bottom="63%",grid_right="20%") grid.add(line, grid_top="60%",grid_right="20%")grid.render('12.利用Grid进行组合.html')

13. Overlap图表组合

from pyecharts import Line, Bar, Overlapattr = ["{}月".format(i) for i in range(1, 13)]v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 102.6, 60.0, 6.4, 3.3]v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 98.7, 58.8, 6.0, 2.3]v3 = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 12.5, 8.0, 3.4]bar = Bar("14.降水量蒸发量和温度示例")bar.use_theme("macarons") bar.add("蒸发量", attr, v1)bar.add("降水量", attr, v2, yaxis_formatter=" ml",yaxis_interval=50, yaxis_max=250)line = Line()line.add("平均温度", attr, v3, yaxis_formatter=" °C", yaxis_interval=5)overlap = Overlap(width=800, height=500)# 默认不新增 x y 轴,并且 x y 轴的索引都为 0overlap.add(bar)# 新增一个y轴,此时 y 轴的数量为2,第二个y轴的索引为1(索引从 0 开始),所以设置 yaxis_index = 1# 使用的是同一个 x 轴,x 轴部分不用做出改变overlap.add(line, yaxis_index=1, is_add_yaxis=True)overlap.render("14.利用Overlap进行图表组合_双坐标轴.html")

from pyecharts import Line,EffectScatter,Overlap #导入相关折线图attr = ["音响", "电视", "相机", "Pad", "手机", "电脑"] v1 = [55, 40, 16, 60, 45, 80] line = Line("14.2线性闪烁示例")line.use_theme("macarons") line.add("", attr, v1, is_smooth=True,is_datazoom_show =True,mark_line=["max", "average"], #光滑线 标记线mark_point=[{"coord":["Pad",60],"name":"这是我标记的第2个点"}])es = EffectScatter()es.add('',attr,v1,effect_scale=8) #闪烁overlop = Overlap()overlop.add(line) #必须先添加line,在添加esoverlop.add(es)overlop.render('14.2线性闪烁示例.html')

14. Page 图表组合

from pyecharts import Bar, Scatter3Dfrom pyecharts import Pagepage = Page() # barattr = ["音响", "电视", "相机", "Pad", "手机", "电脑"] v1 = [5, 20, 36, 10, 75, 90]v2 = [10, 25, 8, 60, 20, 80]bar = Bar("15.柱状图数据堆叠示例",width = 700,height = 300)bar.use_theme("macarons") bar.add("京东", attr, v1, is_stack=True)bar.add("淘宝", attr, v2, is_stack=True)page.add(bar) # scatter3Dimport randomdata = [[random.randint(0, 100),random.randint(0, 100),random.randint(0, 100)] for _ in range(80)]range_color = [ '#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']scatter3D = Scatter3D("3D 散点图示例", width= 700, height=300)scatter3D.add("", data, is_visualmap=True, visual_range_color=range_color)page.add(scatter3D) page.render('15.Page图表组合.html')

14. Timeline 图表组合

from pyecharts import Bar, Timelinefrom random import randintattr = ["音响", "电视", "相机", "Pad", "手机", "电脑"] bar_1 = Bar(" 年销量", "数据纯属虚构")bar_1.add("第一季度", attr, [randint(10, 100) for _ in range(6)])bar_1.add("第二季度", attr, [randint(10, 100) for _ in range(6)])bar_1.add("第三季度", attr, [randint(10, 100) for _ in range(6)])bar_1.add("第四季度", attr, [randint(10, 100) for _ in range(6)])bar_2 = Bar(" 年销量", "数据纯属虚构")bar_2.add("第一季度", attr, [randint(10, 100) for _ in range(6)])bar_2.add("第二季度", attr, [randint(10, 100) for _ in range(6)])bar_2.add("第三季度", attr, [randint(10, 100) for _ in range(6)])bar_2.add("第四季度", attr, [randint(10, 100) for _ in range(6)])bar_3 = Bar(" 年销量", "数据纯属虚构")bar_3.add("第一季度", attr, [randint(10, 100) for _ in range(6)])bar_3.add("第二季度", attr, [randint(10, 100) for _ in range(6)])bar_3.add("第三季度", attr, [randint(10, 100) for _ in range(6)])bar_3.add("第四季度", attr, [randint(10, 100) for _ in range(6)],is_legend_show=True)timeline = Timeline(is_auto_play=True,timeline_bottom=0,timeline_play_interval=1000 # 每 xxx ms播放一张)timeline.add(bar_1, ' 年')timeline.add(bar_2, ' 年')timeline.add(bar_3, ' 年')timeline.render("16.1利用Timeline图表组合_轮播图1.html")

from pyecharts import Map, Timelinefrom random import randintvalue1 = [155, 10, 66, 148, 33, 80, 190, 53, 49.6]attr1 = ["福建", "山东", "北京", "上海", "甘肃", "河南", "浙江", "吉林", "西藏"]map1 = Map("全国各省脱贫人数",title_pos='center')map1.add("",attr1,value1,maptype="china",is_visualmap=True,visual_text_color="#000")value2 = [15, 100, 36, 48, 35, 40, 160, 43, 41]attr2 = ["安徽", "广西", "新疆" , "河南", "浙江", "吉林","上海", "甘肃","西藏"]map2 = Map("全国各省脱贫人数",title_pos='center')map2.add("",attr2,value2,maptype="china",is_visualmap=True,visual_text_color="#000")value3 = [55, 10, 66, 148, 33, 80, 110, 13, 60]attr3 = ["福建", "山东", "北京", "上海", "甘肃", "河南", "山东", "吉林", "陕西"]map3 = Map("全国各省脱贫人数",title_pos='center')map3.add("",attr3,value3,maptype="china",is_visualmap=True,visual_text_color="#000")value4 = [15, 80, 30, 108, 53, 40, 90, 13, 20]attr4= ["黑龙江", "江苏", "天津", "宁夏", "云南", "山西","四川", "甘肃", "河南",]map4= Map("全国各省脱贫人数",title_pos='center')map4.add("",attr4,value4,maptype="china",is_visualmap=True,visual_text_color="#000")value5 = [69, 40, 90, 13, 28, 30,58, 108, 53,]attr5= ["内蒙古", "吉林", "山东", "四川", "甘肃", "河南", "浙江", "云南", "海南"]map5= Map("全国各省脱贫人数",title_pos='center')map5.add("",attr5,value5,maptype="china",is_visualmap=True,visual_text_color="#000")timeline = Timeline(is_auto_play=True,timeline_bottom=0,timeline_play_interval=1000, # 每1000ms播放一张width=800, height=600,timeline_left="10%" #timeline_left=80)timeline.add(map1, ' 年')timeline.add(map2, ' 年')timeline.add(map3, ' 年')timeline.add(map4, ' 年')timeline.add(map5, ' 年')timeline.render("16.2利用Timeline图表组合_轮播图2.html")

六. 应用与总结

总的来看,绘图着重两步,一是数据的获取与读入,文中数据只是随意写的,真正处理时往往会用到对字典列表元组的迭代、切片操作,或者用到 Pandas、Nump 、MySQL等相关库的基础知识;二是进行各项参数配置,这里面涉及很多细节。

当希望将多个图表综合展示时,我们需要图表组合设计,不仅需要基本图表知识,还需要有全局观和审美感。我们来看一个典型应用,清华大学数据库组的新冠疫情可视化项目

我们可看到,在该项目里,分别用到了含地图的时间轮播(Timeline)图、饼图、含坐标轴伸缩的折线图、含标记点的可伸缩的条形堆叠图、可伸缩坐标轴的散点气泡图和含饼图的日历图。这些图表在文章里小笨聪大多都已经介绍过了,当图表结合数据进行分析时,是不是更加清晰有效呢。所以大家也可以试着找一些数据,练习一下可视化。

综合来看,Pyecharts 适合于制作动态交互式图表,可用于爬取的热评影评可视化,疫情数据分析,股票行情显示等众多场景,是一个很不错很友好的可视化工具。

微信公众号“学编程的金融客” 后台回复“pyecharts”即可获取完整代码。

附:

Pyecharts 官网:

/#/zh-cn/intro

清华大学疫情可视化项目:

https://ncov.deepeye.tech/

欢迎关注微信公众号:学编程的金融客,作者:小笨聪

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。