什么是pyecharts?
- pyecharts 是一个用于生成 Echarts 图表的类库。
- echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化。pyecharts 是一个用于生成 Echarts 图表的类库。实际上就是 Echarts 与 Python 的对接。
- 使用 pyecharts 可以生成独立的网页,也可以在 flask , Django 中集成使用。
pyecharts包含的图表
- Bar(柱状图/条形图)
- Bar3D(3D 柱状图)
- Boxplot(箱形图)
- EffectScatter(带有涟漪特效动画的散点图)
- Funnel(漏斗图)
- Gauge(仪表盘)
- Geo(地理坐标系)
- Graph(关系图)
- HeatMap(热力图)
- Kline(K线图)
- Line(折线/面积图)
- Line3D(3D 折线图)
- Liquid(水球图)
- Map(地图)
- Parallel(平行坐标系)
- Pie(饼图)
- Polar(极坐标系)
- Radar(雷达图)
- Sankey(桑基图)
- Scatter(散点图)
- Scatter3D(3D 散点图)
- ThemeRiver(主题河流图)
- WordCloud(词云图)
用户自定义
- Grid 类:并行显示多张图
- Overlap 类:结合不同类型图表叠加画在同张图上
- Page 类:同一网页按顺序展示多图
- Timeline 类:提供时间线轮播多张图
pyecharts安装
pip install pyecharts

pyecharts==0.5.10 pyecharts-javascripthon==0.0.6 pyecharts-jupyter-installer==0.0.3 pyecharts-snapshot==0.1.10
由于墙的原因,下载时会出现断线和速度过慢的问题导致下载失败,所以建议通过清华镜像来进行下载::pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts
这里要专门说明一下,自从 0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表(Geo、Map),可自行安装对应的地图文件包。
- 全球国家地图: echarts-countries-pypkg (1.9MB): 世界地图和 213 个国家,包括中国地图
- 中国省级地图: echarts-china-provinces-pypkg (730KB):23 个省,5 个自治区
- 中国市级地图: echarts-china-cities-pypkg (3.8MB):370 个中国城市
Windows下通过已下的pip命令进行安装
pip install echarts-countries-pypkg pip install echarts-china-provinces-pypkg pip install echarts-china-cities-pypkg

echarts-china-cities-pypkg 0.0.9 echarts-china-counties-pypkg 0.0.2 echarts-china-misc-pypkg 0.0.1 echarts-china-provinces-pypkg 0.0.3 echarts-countries-pypkg 0.1.6 echarts-united-kingdom-pypkg 0.0.1
Linux下通过以下的pip命令进行安装
sudo pip3 install echarts-countries-pypkg sudo pip3 install echarts-china-provinces-pypkg sudo pip3 install echarts-china-cities-pypkg sudo pip3 install echarts-countries-pypkg sudo pip3 install echarts-china-provinces-pypkg sudo pip3 install echarts-china-cities-pypkg
相关函数、参数说明
先介绍一些可能会用到的基本函数:
- add() 主要方法,用于添加图表的数据和设置各种配置项
- show_config() 打印输出图表的所有配置项
- render() 默认将会在根目录下生成一个 render.html 的文件,支持 path 参数,设置文件保存位置,如 render(r"e:my_first_chart.html"),文件用浏览器打开。
默认的编码类型为 UTF-8,在 Python3 中是没什么问题的,Python3 对中文的支持好很多。但是在 Python2 中,编码的处理是个很头疼的问题,暂时没能找到完美的解决方法,目前只能通过文本编辑器自己进行二次编码,我用的是 Visual Studio Code,先通过 Gbk 编码重新打开,然后再用 UTF-8 重新保存,这样用浏览器打开的话就不会出现中文乱码问题了。(这里是某位大佬遇到的问题,我直接复制过来了,供大家参考)
基本上所有的图表类型都是这样绘制的:
- chart_name = Type() 初始化具体类型图表。
- add() 加数据及配置项。
- render() 生成 .html 文件。
直接将图片保存为 png, pdf, gif 格式的文件
第三步:安装 pyecharts-snapshot:
pip install pyecharts-snapshot
第四步:重启计算机,render(path=“”)的输出路径和格式即可。
from pyecharts import Pie,configure configure(output_image=True) pie =Pie('饼图',background_color = 'white',title_text_size = 25) attr = ['惠州','东莞','广州','深圳','佛山','江门','珠海'] v1 = [12,22,34,29,16,14,18] pie.add('',attr,v1,is_label_show = True) pie.render(path = 'D:\\饼图.jpeg')
基本使用
官网文档:https://pyecharts.org/#/zh-cn/quickstart。
柱状图
Bar(柱状图/条形图):柱状/条形图,通过柱形的高度/条形的宽度来表现数据的大小。
add(name, x_axis, y_axis, is_stack=False, bar_category_gap='20%', **kwargs)。
常用的参数(可以在add()中设置,实现各种需求):
- name->str 图例名称 。
- x_axis -> list:x 坐标轴数据
- y_axis -> list:y 坐标轴数据
- bar_category_gap -> int/str:类目轴的柱状距离,当设置为 0 时柱状是紧挨着(直方图类型),默认为 '20%'
- is stack:是否堆积
- is convert:x,y轴是否交换
- is_legend_show:是否显示图例
- legend_orient:图列方向,有'horizontal'(默认水平显示),'vertical'(垂直)可选
- legend_pos:图例位置,有'left', 'center'(默认), 'right'可选
- legend_text_size/color:图例名称字体大小/颜色
- is_x/yaxis_show:是否显示x/y轴
- x/yaxis_interval:x/y轴标签的显示间隔
- x/yaxis_min/max:x/y轴刻度最小值/最大值
- x/yaxis_label_textsize/textcolor:x/y轴标签字体大小/颜色
- xaxis_rotate:x轴标签旋转角度
- is_splitline_show:是否显示网格线
- is_label_show:是否显示标签
- label_pos:标签的位置,有'top'(默认), 'left', 'right', 'bottom', 'inside','outside'可选
- label_text_color/size:标签字体颜色/大小
- is_random:是否随机排列颜色列表
- label_color:自定义标签颜色
- mark_point/line:标记点/线,默认有'min', 'max', 'average'可选。可自定义标记点线,具体格式如:[{'coord': [x, y], 'name': '目标标记点'}],记住格式是一个列表
- mark_point/line_symbol:标记点/线图形,默认为'pin'(点),有'circle'(圆形), 'rect'(正方形), 'roundRect'(圆角正方形), 'triangle'(三角形), 'diamond'(菱形), 'pin'(点), 'arrow'(箭头)可选
- mark_point/line_symbolsize:标记点/线图形大小
- mark_point/line_textcolor:标记点/线字体颜色
基本配置
'''1.在Bar()函数里添加的参数''' # title -> str:主标题文本,支持 \n 换行,默认为 “” # subtitle -> str:副标题文本,支持 \n 换行,默认为 “” # width -> int:画布宽度,默认为 800(px) # height -> int:画布高度,默认为 400(px) # title_color -> str:主标题文本颜色,默认为 ‘#000’ # subtitle_color -> str:副标题文本颜色,默认为 ‘#aaa’ # background_color -> str:画布背景颜色,默认为 ‘#fff’ # page_title -> str:指定生成的 html 文件中 <title> 标签的值。默认为’Echarts’ # renderer -> str:指定使用渲染方式,有 ‘svg’ 和 ‘canvas’ 可选,默认为 ‘canvas’。3D 图仅能使用 ‘canvas’(canvas和svg区别请参考:https://blog.csdn.net/helloword_chen/article/details/49788309 ) '''2.在add()函数里添加的参数''' # is_random -> bool:是否随机排列颜色列表,默认为 False # label_color -> list:自定义标签颜色。全局颜色列表,所有图表的图例颜色均在这里修改。如 Bar 的柱状颜色,Line 的线条颜色等等。 # is_label_show -> bool:是否正常显示标签,默认不显示。标签即各点的数据项信息 # label_pos -> str:标签的位置,Bar 图默认为’top’。有’top’, ‘left’, ‘right’, ‘bottom’, ‘inside’,’outside’可选 # label_text_color -> str:标签字体颜色,默认为 “#000” # label_text_size -> int:标签字体大小,默认为 12 # is_random -> bool:是否随机排列颜色列表,默认为 False # label_formatter -> function def label_formatter(params): return params.value + ' [Good!]' # (params: Object|Array) => string ''' 参数 params 是 formatter 需要的单个数据集。格式如下: { componentType: 'series', // 系列类型 seriesType: string, // 系列在传入的 option.series 中的 index seriesIndex: number, // 系列名称 seriesName: string, // 数据名,类目名 name: string, // 数据在传入的 data 数组中的 index dataIndex: number, // 传入的原始数据项 data: Object, // 传入的数据值 value: number|Array, // 数据图形的颜色 color: string, } '''
# 总结 # 导入相关图表包 # 进行图表的基础设置,创建图表对象 # 利用add()方法进行数据输入与图表设置(可以使用print_echarts_options()来输出所有可配置项) # 利用render()方法来进行图表保存 #柱状图 from pyecharts import Bar attr =["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 =[5, 20, 36, 10, 10, 100] v2 =[55, 60, 16, 20, 15, 80] bar = Bar('柱形图', '库存量',width=1000,height=600) bar.add('服装', attr, v1, is_label_show=True) # bar.show_config() # bar.render(path='./data/01-01柱形图.html') bar2 = Bar("显示标记线和标记点") bar2.add('商家A', attr, v1, mark_point=['avgrage']) bar2.add('商家B', attr, v2, mark_point=['min', 'max']) # bar2.show_config() # bar2.render(path='./data/01-02标记点柱形图.html') bar3 = Bar("水平显示") bar3.add('商家A', attr, v1) bar3.add('商家B', attr, v2, is_convert=True) # bar3.show_config() bar3.render(path='./01-03水平柱形图.html') bar3

from pyecharts import Bar,configure # configure(output_image=True) bar = Bar('各个城市的人口','虚构的',background_color = 'white',title_text_size = 25,subtitle_text_size = 15) attr = ['惠州','东莞','广州','深圳','佛山','江门','珠海'] v1 = [23,45,68,58,32,28,36] v2 = [12,22,34,29,16,14,18] bar.add('举例数字1',attr,v1,is_label_show = True,mark_point = ['min','max'], mark_point_symbol = 'diamond',xaxis_rotate = 30,xaxis_label_textsize = 15,yaxis_label_textsize = 15) bar.add('举例数字2',attr,v2,is_label_show = True,mark_point = ['min','max'], mark_point_symbol = 'triangle',xaxis_rotate = 30,xaxis_label_textsize = 15,yaxis_label_textsize = 15) # bar.render(path = 'D:\\示例1.jpeg') bar

import random attr = ["{}天".format(i) for i in range(20)] v1 = [random.randint(1, 20) for _ in range(20)] bar = Bar("坐标轴标签旋转示例") bar.add("", attr, v1, xaxis_interval=0, xaxis_rotate=30, yaxis_rotate=30) bar
折线图
from pyecharts import Line attr =["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 =[5, 20, 36, 10, 10, 100] v2 =[55, 60, 16, 20, 15, 80] # 普通折线图 line = Line('折线图') line.add('商家A', attr, v1, mark_point=['max']) line.add('商家B', attr, v2, mark_point=['min'], is_smooth=True) #is_smooth:是否平滑处理 # line.show_config() # line.render(path='./data/01-04折线图.html') # 阶梯折线图 line2 = Line('阶梯折线图') line2.add('商家A', attr, v1, is_step=True, is_label_show=True) # line2.show_config() # line2.render(path='./data/01-05阶梯折线图.html') # is_fill实现面积折线图 line3 =Line("面积折线图") line3.add("商家A", attr, v1, is_fill=True, line_opacity=0.2, area_opacity=0.4, symbol=None, mark_point=['max']) line3.add("商家B", attr, v2, is_fill=True, area_color='#a3aed5', area_opacity=0.3, is_smooth=True) #area_opacity:填充面积的透明度;area_color:填充面积的颜色;symbol = None:去掉线上的点。 # line3.show_config() # line3.render(path='./data/01-06面积折线图.html') line
柱形图-折线图
# 柱形图-折线图 from pyecharts import Bar, Line, Overlap att = ['A', 'B', 'C', 'D', 'E', 'F'] v3 = [10, 20, 30, 40, 50, 60] v4 = [38, 28, 58, 48, 78, 68] bar = Bar("柱形图-折线图") bar.add('bar', att, v3) line = Line() line.add('line', att, v4) overlap = Overlap() overlap.add(bar) overlap.add(line) # overlap.show_config() # overlap.render(path='./data/01-066柱形图-折线图.html') overlap
饼图
from pyecharts import Pie # 饼图 pie = Pie('饼图') pie.add('芝麻饼', attr, v1, is_label_show=True,title_text_size = 25) # pie.show_config() # pie.render(path='./data/01-07饼图.html') # 设置rosetype参数实现南丁格尔图(玫瑰图) pie2 = Pie("饼图-玫瑰图示例", title_pos='center', width=900) pie2.add("商品A", attr, v1, center=[25, 50], is_random=True, radius=[30, 75], rosetype='radius') pie2.add("商品B", attr, v2, center=[75, 50], is_random=True, radius=[30, 75], rosetype='area', is_legend_show=False, is_label_show=True) ''' rosetype有'radius'和'area'两种模式,其中: radius:通过半径显示数据的大小,扇区圆心角展现数据的百分比; area:通过半径显示数据的大小,各扇区圆心角相等。 另外还可以通过设置center参数调整圆心位置(center = [x,y],x为横坐标,y为纵坐标) ''' # pie2.show_config() # pie2.render(path='./data/01-08玫瑰饼图.html') #设置radius参数实现圆环图:radius = [x,y],x是内半径,y是外半径 pie3 =Pie('圆环图',background_color = 'white',title_pos = 'center') pie3.add('',attr,v1,is_label_show = True,radius=[30, 75],is_legend_show = False) pie4 =Pie('圆环中的玫瑰图',background_color = 'white') attr = ['惠州','东莞','广州','深圳','佛山','江门','珠海'] v1 = [12,22,34,29,16,14,18] pie4.add( '',attr,v1,radius=[65, 75],center=[50, 50]) pie4.add('',attr,v1,radius=[0, 60],center=[50, 50],rosetype='area') pie2
散点图
from pyecharts import Scatter # 散点图 v1 =[10, 20, 30, 40, 50, 60] v2 =[10, 20, 30, 40, 50, 60] scatter =Scatter("散点图示例") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2,xaxis_min = 5) # scatter.show_config() # scatter.render(path='./data/03-06散点图.html') # 散点打印Pyecharts字体 白底图片 # scatter =Scatter("散点图示例") # v1, v2 = scatter.draw("./data/two.jpg") # scatter.add("pyecharts", v1, v2, is_random=True) # scatter.show_config() # scatter.render(path='./data/03-06打印字体.html') scatter

from pyecharts import Scatter scatter = Scatter( '学霸是画出来的') ''' draw(self, path, color=None) | 将图片上的像素点转换为数组,如 color 为(255,255,255)时只保留非白色像素点的 | 坐标信息返回两个 k_lst, v_lst 两个列表刚好作为散点图的数据项 | | :param path: | 转换图片的地址 | :param color: | 所要排除的颜色 | :return: | 转换后的数组 ''' v1, v2 = scatter.draw( './pic.png') scatter.add( '学霸印章', v1, v2, mark_size=1) # scatter.render( './参考案例HTML/学霸是画出来的散点图.html') scatter
动态散点图
from pyecharts import EffectScatter attr =["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 =[5, 20, 36, 10, 10, 100] v2 =[55, 60, 16, 20, 15, 80] # 动态散点图 es =EffectScatter("动态散点图") # v1 x坐标 v2 y坐标 es.add("商家", v1, v2) # es.show_config() # es.render('./data/01-09散点图.html') # 动态散点图各种图形 es2 = EffectScatter("动态散点图各种图形") es2.add("", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin") es2.add("", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4,symbol="rect") es2.add("", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5,symbol="roundRect") es2.add("", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype='fill',symbol="diamond") es2.add("", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3,symbol="arrow") es2.add("", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3,symbol="triangle") # es.show_config() # es.render(path = "./data/01-10动态散点图各种图形.html") es2
多个饼图
from pyecharts import Pie pie =Pie('各类电影中"好片"所占的比例', "数据来着豆瓣", title_pos='center') pie.add("", ["剧情", ""], [25, 75], center=[10, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, ) pie.add("", ["奇幻", ""], [24, 76], center=[30, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None,legend_pos='left' ) pie.add("", ["爱情", ""], [14, 86], center=[50, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["惊悚", ""], [11, 89], center=[70, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["冒险", ""], [27, 73], center=[90, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["动作", ""], [15, 85], center=[10, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["喜剧", ""], [54, 46], center=[30, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["科幻", ""], [26, 74], center=[50, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["悬疑", ""], [25, 75], center=[70, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["犯罪", ""], [28, 72], center=[90, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, is_legend_show=True,legend_top="center" ) # pie.show_config() # pie.render(path='./data/01-多个饼图.html') pie
多标记柱形图
from pyecharts import Bar attr =["{}月".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, 32.6, 20.0, 6.4, 3.3] v2 =[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3] bar =Bar("柱状图示例") bar.add("蒸发量", attr, v1, mark_line=["average"], mark_point=["max", "min"]) bar.add("降水量", attr, v2, mark_line=["average"], mark_point=["max", "min"]) # bar.show_config() # bar.render(path='./data/02-多标记柱形图.html') bar
仪表盘
add(name, attr, value, scale_range=None, angle_range=None, **kwargs)
- name -> str:图例名称
- attr -> list:属性名称
- value -> list:属性所对应的值
- scale_range -> list:仪表盘数据范围。默认为 [0, 100]
- angle_range -> list:仪表盘角度范围。默认为 [225, -45]
from pyecharts import Gauge # 仪表盘 gauge = Gauge("仪表盘") gauge.add('业务指标', '完成率', 96.66) # gauge.show_config() # gauge.render(path="./data/02-02仪表盘.html") gauge

from pyecharts import Gauge gauge = Gauge( '今日加班概率') gauge.add( '', "可能性", 99.99, angle_range=[ 225, -45],scale_range=[ 0, 100], is_legend_show= False) # gauge.render( './参考案例HTML/今日加班概率仪表盘.html') gauge
漏斗图
from pyecharts import Funnel # 漏斗图 funnel = Funnel('漏斗图') funnel.add('商品',attr,v1, is_label_show=True, label_pos='inside', label_text_color="#fff",legend_pos='left',legend_top="bottom") # funnel.show_config() # funnel.render(path="./data/02-01漏斗图.html") funnel
关系图
from pyecharts import Funnel, Gauge, Graph # 关系图 nodes =[{"name": "结点1", "symbolSize": 10}, {"name": "结点2", "symbolSize": 20}, {"name": "结点3", "symbolSize": 30}, {"name": "结点4", "symbolSize": 40}, {"name": "结点5", "symbolSize": 50}, {"name": "结点6", "symbolSize": 40}, {"name": "结点7", "symbolSize": 30}, {"name": "结点8", "symbolSize": 20}] links =[] for i in nodes: for j in nodes: links.append({"source": i.get('name'), "target": j.get('name')}) # print(links) # print(nodes) graph =Graph("关系图-环形布局示例") graph.add("", nodes, links, is_label_show=True, repulsion=8000, layout='circular', label_text_color=None) # graph.show_config() # graph.render(path="./data/02-03关系图.html") graph
水球图
from pyecharts import Liquid liquid =Liquid("水球图") liquid.add("Liquid", [0.6]) # liquid.show_config() # liquid.render(path='./data/03-01水球.html') # 圆形水球 liquid2 =Liquid("水球图示例") liquid2.add("Liquid", [0.6, 0.5, 0.4, 0.3], is_liquid_outline_show=False) # liquid2.show_config() # liquid2.render(path='./data/03-02圆形水球.html') # 菱形水球 liquid3 =Liquid("水球图示例") liquid3.add("Liquid", [0.6, 0.5, 0.4, 0.3], is_liquid_animation=False, shape='diamond') # liquid3.show_config() # liquid3.render(path='./data/03-03菱形水球.html') liquid3
极坐标
from pyecharts import Polar # 极坐标 radius =['周一', '周二', '周三', '周四', '周五', '周六', '周日'] polar =Polar("极坐标系-堆叠柱状图示例", width=1200, height=600) polar.add("A", [1, 2, 3, 4, 3, 5, 1], radius_data=radius, type='barRadius', is_stack=True) polar.add("B", [2, 4, 6, 1, 2, 3, 1], radius_data=radius, type='barRadius', is_stack=True) polar.add("C", [1, 2, 3, 4, 1, 2, 5], radius_data=radius, type='barRadius', is_stack=True) # polar.show_config() # polar.render(path='./data/03-04极坐标.html') polar
雷达图
from pyecharts import Radar # 雷达图 schema =[ ("销售", 6500), ("管理", 16000), ("信息技术", 30000), ("客服", 38000), ("研发", 52000), ("市场", 25000)] v1 =[[4300, 10000, 28000, 35000, 50000, 19000]] v2 =[[5000, 14000, 28000, 31000, 42000, 21000]] radar =Radar() radar.config(schema) radar.add("预算分配", v1, is_splitline=True, is_axisline_show=True) radar.add("实际开销", v2, label_color=["#4e79a7"], is_area_show=False) # radar.show_config() # radar.render(path='./data/03-05雷达图.html')

# 雷达图-Rader from pyecharts import Radar radar = Radar("雷达图", "一年的降水量与蒸发量") # //由于雷达图传入的数据得为多维数据,所以这里需要做一下处理 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
词云图
from pyecharts import WordCloud name =['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications', 'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp', 'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham', 'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break'] value=[10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265] wordcloud =WordCloud(width=1000, height=620) wordcloud.add("", name, value, word_size_range=[20, 100]) # wordcloud.show_config() # wordcloud.render(path='./data/05-01权重词云.html') wordcloud2 =WordCloud(width=1000, height=620) wordcloud2.add("", name, value, word_size_range=[30, 100], shape='diamond') # wordcloud2.show_config() # wordcloud2.render(path='./data/05-02变形词云.html') # # 中文显示 # from pyecharts import WordCloud, ImageColorGenerator # from PIL import Image # import matplotlib.pyplot as plt # import numpy as np # words = ['好看', '不错', '人性', '可以', '值得', '真的', '一部', '感觉', '喜欢', '一般', '演技', '还是', # '剧情', '一出', '有点', '出好', '好戏', '不是', '没有', '非常', '哈哈', '喜剧', '就是', '一个', # '现实', '什么', '支持', '还行', '但是', '很多', '觉得', '搞笑', '值得一看', '故事', '看好', # '这部', '哈哈哈', '失望', '最后', '导演', '自己', '演员', '看完', '社会', '特别', '看到', '不好', # '比较', '表达', '那么', '作品', '个人', '东西', '思考', '这个', '第一', '不过', '情节', # '哈哈哈哈', '意思', '一直', '推荐', '一般般', '时候', '开始', '般般', '片子', '知道', '处女', # '期待', '很棒', '影院', '深度', '反应', '无聊', '可能', '一些', '精彩', '爱情', '这么', '希望', # '一点', '不知', '有些', '还好', '恐怖', '看着', '没看', '还有', '观看', '后面', '真实', '因为', # '如果', '出来', '部分', '确实', '我们', '意义', '深刻'] # new_worlds = " ".join(words) # # 参照图片 # coloring = np.array(Image.open("./pic.png")) # # simkai.ttf 必填项 识别中文的字体,例:simkai.ttf, # my_wordcloud = WordCloud(background_color="white", max_words=800, # mask=coloring, max_font_size=120, random_state=30, scale=2,font_path="./data/simkai.ttf").generate(new_worlds) # image_colors = WordCloud.ImageColorGenerator(coloring) # plt.imshow(my_wordcloud.recolor(color_func=image_colors)) # plt.imshow(my_wordcloud) # plt.axis("off") # plt.show() # # 保存图片 # my_wordcloud.to_file('./data/05-03signature.png')

#词云图 # 参数 含义 类型 # name 图列名称 str # attr word数据,词云图中显示的词语 list # valua 词语权重,相当于词频 list # shape 生成的词云图轮廓, 有'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star'可选 list # word_gap 单词间隔,默认为20 int # word_size_range 单词字体大小范围,默认为[12,60] list # rotate_step 旋转单词角度, 默认为45 from pyecharts import WordCloud name =['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications', 'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp', 'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham', 'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break'] value =[10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265] wordcloud =WordCloud(width=1000, height=620) wordcloud.add("", name, value, word_size_range=[20, 100]) # wordcloud.show_config() print(help(wordcloud))
k线图
add(name, x_axis, y_axis, **kwargs)
name -> str:图例名称
x_axis -> list:x 坐标轴数据
y_axis -> [list]:包含列表的列表 y 坐标轴数据。
数据中,每一行是一个『数据项』,每一列属于一个『维度』。 数据项具体为 [open, close, lowest, highest] (即:[开盘值, 收盘值, 最低值, 最高值])
from pyecharts import Kline v1 = [[2320.26, 2320.26, 2287.3, 2362.94], [2300, 2291.3, 2288.26, 2308.38], [2295.35, 2346.5, 2295.35, 2345.92], [2347.22, 2358.98, 2337.35, 2363.8], [2360.75, 2382.48, 2347.89, 2383.76], [2383.43, 2385.42, 2371.23, 2391.82], [2377.41, 2419.02, 2369.57, 2421.15], [2425.92, 2428.15, 2417.58, 2440.38], [2411, 2433.13, 2403.3, 2437.42], [2432.68, 2334.48, 2427.7, 2441.73], [2430.69, 2418.53, 2394.22, 2433.89], [2416.62, 2432.4, 2414.4, 2443.03], [2441.91, 2421.56, 2418.43, 2444.8], [2420.26, 2382.91, 2373.53, 2427.07], [2383.49, 2397.18, 2370.61, 2397.94], [2378.82, 2325.95, 2309.17, 2378.82], [2322.94, 2314.16, 2308.76, 2330.88], [2320.62, 2325.82, 2315.01, 2338.78], [2313.74, 2293.34, 2289.89, 2340.71], [2297.77, 2313.22, 2292.03, 2324.63], [2322.32, 2365.59, 2308.92, 2366.16], [2364.54, 2359.51, 2330.86, 2369.65], [2332.08, 2273.4, 2259.25, 2333.54], [2274.81, 2326.31, 2270.1, 2328.14], [2333.61, 2347.18, 2321.6, 2351.44], [2340.44, 2324.29, 2304.27, 2352.02], [2326.42, 2318.61, 2314.59, 2333.67], [2314.68, 2310.59, 2296.58, 2320.96], [2309.16, 2286.6, 2264.83, 2333.29], [2282.17, 2263.97, 2253.25, 2286.33], [2255.77, 2270.28, 2253.31, 2276.22]] kline = Kline("K 线图示例") kline.add("日K", ["2018/9/{}".format(i + 1) for i in range(30)], v1) kline
3D柱形图
add(name, x_axis, y_axis, data, grid3d_opacity=1, grid3d_shading='color', **kwargs)
- name -> str:图例名称。
- x_axis -> str:x 坐标轴数据。需为类目轴,也就是不能是数值。
- y_axis -> str:y 坐标轴数据。需为类目轴,也就是不能是数值。
- data -> [list],:包含列表的列表 数据项,数据中,每一行是一个『数据项』,每一列属于一个『维度。
- grid3d_opacity -> int:3D 笛卡尔坐标系组的透明度(柱状的透明度),默认为 1,完全不透明。
- grid3d_shading -> str:三维柱状图中三维图形的着色效果。
- color:只显示颜色,不受光照等其它因素的影响。
- lambert:通过经典的 lambert 着色表现光照带来的明暗。
- realistic:真实感渲染,配合 light.ambientCubemap 和 postEffect 使用可以让展示的画面效果和质感有质的提升。ECharts GL 中使用了基于物理的渲染(PBR) 来表现真实感材质。
from pyecharts import Bar3D bar3d = Bar3D("3D 柱状图示例", width=1000, height=600) x_axis = [ "12a", "1a", "2a", "3a", "4a", "5a", "6a", "7a", "8a", "9a", "10a", "11a", "12p", "1p", "2p", "3p", "4p", "5p", "6p", "7p", "8p", "9p", "10p", "11p" ] y_axis = [ "Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday" ] data = [ [0, 0, 5], [0, 1, 1], [0, 2, 0], [0, 3, 0], [0, 4, 0], [0, 5, 0], [0, 6, 0], [0, 7, 0], [0, 8, 0], [0, 9, 0], [0, 10, 0], [0, 11, 2], [0, 12, 4], [0, 13, 1], [0, 14, 1], [0, 15, 3], [0, 16, 4], [0, 17, 6], [0, 18, 4], [0, 19, 4], [0, 20, 3], [0, 21, 3], [0, 22, 2], [0, 23, 5], [1, 0, 7], [1, 1, 0], [1, 2, 0], [1, 3, 0], [1, 4, 0], [1, 5, 0], [1, 6, 0], [1, 7, 0], [1, 8, 0], [1, 9, 0], [1, 10, 5], [1, 11, 2], [1, 12, 2], [1, 13, 6], [1, 14, 9], [1, 15, 11], [1, 16, 6], [1, 17, 7], [1, 18, 8], [1, 19, 12], [1, 20, 5], [1, 21, 5], [1, 22, 7], [1, 23, 2], [2, 0, 1], [2, 1, 1], [2, 2, 0], [2, 3, 0], [2, 4, 0], [2, 5, 0], [2, 6, 0], [2, 7, 0], [2, 8, 0], [2, 9, 0], [2, 10, 3], [2, 11, 2], [2, 12, 1], [2, 13, 9], [2, 14, 8], [2, 15, 10], [2, 16, 6], [2, 17, 5], [2, 18, 5], [2, 19, 5], [2, 20, 7], [2, 21, 4], [2, 22, 2], [2, 23, 4], [3, 0, 7], [3, 1, 3], [3, 2, 0], [3, 3, 0], [3, 4, 0], [3, 5, 0], [3, 6, 0], [3, 7, 0], [3, 8, 1], [3, 9, 0], [3, 10, 5], [3, 11, 4], [3, 12, 7], [3, 13, 14], [3, 14, 13], [3, 15, 12], [3, 16, 9], [3, 17, 5], [3, 18, 5], [3, 19, 10], [3, 20, 6], [3, 21, 4], [3, 22, 4], [3, 23, 1], [4, 0, 1], [4, 1, 3], [4, 2, 0], [4, 3, 0], [4, 4, 0], [4, 5, 1], [4, 6, 0], [4, 7, 0], [4, 8, 0], [4, 9, 2], [4, 10, 4], [4, 11, 4], [4, 12, 2], [4, 13, 4], [4, 14, 4], [4, 15, 14], [4, 16, 12], [4, 17, 1], [4, 18, 8], [4, 19, 5], [4, 20, 3], [4, 21, 7], [4, 22, 3], [4, 23, 0], [5, 0, 2], [5, 1, 1], [5, 2, 0], [5, 3, 3], [5, 4, 0], [5, 5, 0], [5, 6, 0], [5, 7, 0], [5, 8, 2], [5, 9, 0], [5, 10, 4], [5, 11, 1], [5, 12, 5], [5, 13, 10], [5, 14, 5], [5, 15, 7], [5, 16, 11], [5, 17, 6], [5, 18, 0], [5, 19, 5], [5, 20, 3], [5, 21, 4], [5, 22, 2], [5, 23, 0], [6, 0, 1], [6, 1, 0], [6, 2, 0], [6, 3, 0], [6, 4, 0], [6, 5, 0], [6, 6, 0], [6, 7, 0], [6, 8, 0], [6, 9, 0], [6, 10, 1], [6, 11, 0], [6, 12, 2], [6, 13, 1], [6, 14, 3], [6, 15, 4], [6, 16, 0], [6, 17, 0], [6, 18, 0], [6, 19, 0], [6, 20, 1], [6, 21, 2], [6, 22, 2], [6, 23, 6] ] range_color = ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] bar3d.add( "", x_axis, y_axis, [[d[1], d[0], d[2]] for d in data], is_visualmap=True, visual_range=[0, 20], visual_range_color=range_color, grid3d_width=200, grid3d_depth=80, is_grid3d_rotate=True, grid3d_rotate_speed=25 ) bar3d
热力图
from pyecharts import HeatMap import random x_axis = ["12a", "1a", "2a", "3a", "4a", "5a", "6a", "7a", "8a", "9a", "10a", "11a", "12p", "1p", "2p", "3p", "4p", "5p", "6p", "7p", "8p", "9p", "10p", "11p"] y_aixs = ["Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"] data = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)] heatmap = HeatMap() heatmap.add("热力图直角坐标系", x_axis, y_aixs, data, is_visualmap=True, visual_text_color="#000", visual_orient='horizontal') heatmap
3D折线图
from pyecharts import Line3D import math _data = [] for t in range(0, 25000): _t = t / 1000 x = (1 + 0.25 * math.cos(75 * _t)) * math.cos(_t) y = (1 + 0.25 * math.cos(75 * _t)) * math.sin(_t) z = _t + 2.0 * math.sin(75 * _t) _data.append([x, y, z]) range_color = ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] line3d = Line3D("3D 折线图示例", width=1200, height=600) line3d.add("", _data, is_visualmap=True, visual_range_color=range_color, visual_range=[0, 30], is_grid3d_rotate=True, grid3d_rotate_speed=25) line3d
平行坐标系-默认指示器
from pyecharts import Parallel schema = ["data", "AQI", "PM2.5", "PM10", "CO", "NO2"] data = [ [1, 91, 45, 125, 0.82, 34], [2, 65, 27, 78, 0.86, 45,], [3, 83, 60, 84, 1.09, 73], [4, 109, 81, 121, 1.28, 68], [5, 106, 77, 114, 1.07, 55], [6, 109, 81, 121, 1.28, 68], [7, 106, 77, 114, 1.07, 55], [8, 89, 65, 78, 0.86, 51, 26], [9, 53, 33, 47, 0.64, 50, 17], [10, 80, 55, 80, 1.01, 75, 24], [11, 117, 81, 124, 1.03, 45] ] parallel = Parallel("平行坐标系-默认指示器") parallel.config(schema) parallel.add("parallel", data, is_random=True) parallel
3D散点图
from pyecharts import Scatter3D import random data = [[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=1200, height=600) scatter3D.add("", data, is_visualmap=True, visual_range_color=range_color,is_grid3d_rotate=True, grid3d_rotate_speed=25) scatter3D
多个图
from pyecharts import Bar, Line, Scatter, EffectScatter, Grid attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, width=1200, title_pos="65%") bar.add("商家A", attr, v1, is_stack=True) bar.add("商家B", attr, v2, is_stack=True, legend_pos="80%") line = Line("折线图示例") attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add("es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%") grid = Grid() grid.add(bar, grid_bottom="60%", grid_left="60%") grid.add(line, grid_bottom="60%", grid_right="60%") grid.add(scatter, grid_top="60%", grid_left="60%") grid.add(es, grid_top="60%", grid_right="60%") grid
Timeline时间轴
from pyecharts import Bar, Timeline from random import randint attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] bar_1 = Bar("2012 年销量", "数据纯属虚构") 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("2013 年销量", "数据纯属虚构") 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("2014 年销量", "数据纯属虚构") 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)]) bar_4 = Bar("2015 年销量", "数据纯属虚构") bar_4.add("春季", attr, [randint(10, 100) for _ in range(6)]) bar_4.add("夏季", attr, [randint(10, 100) for _ in range(6)]) bar_4.add("秋季", attr, [randint(10, 100) for _ in range(6)]) bar_4.add("冬季", attr, [randint(10, 100) for _ in range(6)]) bar_5 = Bar("2016 年销量", "数据纯属虚构") bar_5.add("春季", attr, [randint(10, 100) for _ in range(6)]) bar_5.add("夏季", attr, [randint(10, 100) for _ in range(6)]) bar_5.add("秋季", attr, [randint(10, 100) for _ in range(6)]) bar_5.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=500) timeline.add(bar_1, '2012 年') timeline.add(bar_2, '2013 年') timeline.add(bar_3, '2014 年') timeline.add(bar_4, '2015 年') timeline.add(bar_5, '2016 年') # timeline
箱体图
# 箱体图-Boxplot # //导入箱型图Boxplot from pyecharts import Boxplot boxplot = Boxplot("箱形图", "一年的降水量与蒸发量") 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] 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] x_axis = ['降水量','蒸发量'] y_axis = [data1,data2] # //prepare_data方法可以将数据转为嵌套的 [min, Q1, median (or Q2), Q3, max] yaxis = boxplot.prepare_data(y_axis) boxplot.add("天气统计", x_axis, y_axis) # boxplot.render() boxplot
地图
Geo(地理坐标系)
- add(name, attr, value, type="scatter", maptype='china', coordinate_region='中国', symbol_size=12, border_color="#111", geo_normal_color="#323c48", geo_emphasis_color="#2a333d", geo_cities_coords=None, is_roam=True, **kwargs)
- name -> str 图例名称
- attr -> list 属性名称,(其实就是地点名)
- value -> list 属性所对应的值
- type -> str 图例类型,有'scatter', 'effectScatter', 'heatmap'可选。默认为 'scatter'
- maptype -> str 地图类型。 从 v0.3.2+ 起,地图已经变为扩展包,支持全国省份,全国城市,全国区县,全球国家等地图,具体请参考 地图自定义篇
- coordinate_region -> str 城市坐标所属国家。从 v0.5.7 引入,针对国际城市的地理位置的查找。默认为 中国。具体的国家/地区映射表参照 countries_regions_db.json。更多地理坐标信息可以参考 数据集篇
- symbol_size -> int 标记图形大小。散点的大小。默认为 12
- border_color -> str 地图边界颜色。默认为 '#111'
- geo_normal_color -> str 正常状态下地图区域的颜色。默认为 '#323c48'
- geo_emphasis_color -> str 高亮状态下地图区域的颜色。默认为 '#2a333d'
- geo_cities_coords -> dict 用户自定义地区经纬度,类似如 {'阿城': [126.58, 45.32],} 这样的字典。 i
- s_roam -> bool 是否开启鼠标缩放和平移漫游。默认为 True 如果只想要开启缩放或者平移,可以设置成'scale'或者'move'。设置成 True 为都开启
- visual_range:可视化的数值范围
- visual_text_color:标签颜色
- is_piecewise :颜色是否分段显示(False为渐变,True为分段)
- is_visualmap:是否映射(数量与颜色深浅是否挂钩)
- visual_split_number :可视化数值分组
Map(地图) 地图主要用于地理区域数据的可视化
- add(name, attr, value, maptype='china', is_roam=True, is_map_symbol_show=True, **kwargs)
- name -> str 图例名称
- attr -> list 属性名称
- value -> list 属性所对应的值
- maptype -> str 地图类型。 从 v0.3.2+ 起,地图已经变为扩展包,支持全国省份,全国城市,全国区县,全球国家等地图,具体请参考 地图自定义篇
- is_roam -> bool/str 是否开启鼠标缩放和平移漫游。默认为 True 如果只想要开启缩放或者平移,可以设置成'scale'或者'move'。设置成 True 为都开启
- is_map_symbol_show -> bool 是否显示地图标记红点,默认为 True
- name_map -> dict 用自定义的地图名称. 有些地图提供行政区号,name_map 可以帮助把它们转换成用户满意的地名。比如英国选区地图,伦敦选区的行政区号是 E14000639 ,把它转换成可读地名就需要这么一个字典
这里也要先说明一点因为echarts里面有的地点可能没有,一旦添加了没有的在这里面,将会生成一个空的图。有三个解决办法:
- 最简单的把不存在删掉;
- 到百度地图api里把找不到的地方的经纬度加进原始的包里(这个办法大家可以参看这位大佬的博客https://blog.csdn.net/summerstones/article/details/78078789);
- 如果你的数据在地图中并没有坐标城市,可以通过 geo_cities_coords 自己进行添加,GeoLine图同样如此
#地理坐标图 from pyecharts import Map, Geo # data =[("海门", 9), ("鄂尔多斯", 12), ("招远", 12), ("舟山", 12), ("齐齐哈尔", 14), ("盐城", 15)] # geo =Geo("全国主要城市空气质量", "data from pm2.5", title_color="#fff", title_pos="center", width=1000, height=600, background_color='#404a59') # attr, value =geo.cast(data) # geo.add("", attr, value, type="effectScatter", is_random=True, effect_scale=5)#type的可选参数:effectScatter,heatmap # # geo.show_config() # 世界地图数据 value = [95.1, 23.2, 43.3, 66.4, 88.5] attr= ["China", "Canada", "Brazil", "Russia", "United States"] # 省和直辖市 province_distribution = {'河南': 45.23, '北京': 37.56, '河北': 21, '辽宁': 12, '江西': 6, '上海': 20, '安徽': 10, '江苏': 16, '湖南': 9, '浙江': 13, '海南': 2, '广东': 22, '湖北': 8, '黑龙江': 11, '澳门': 1, '陕西': 11, '四川': 7, '内蒙古': 3, '重庆': 3, '云南': 6, '贵州': 2, '吉林': 3, '山西': 12, '山东': 11, '福建': 4, '青海': 1, '舵主科技,质量保证': 1, '天津': 1, '其他': 1} provice=list(province_distribution.keys()) values=list(province_distribution.values()) # 城市 -- 指定省的城市 xx市 city = ['南宁市', '玉林市', '梧州市', '河池市', '钦州市'] values2 = [15, 65, 7, 8, 5] # 区县 -- 具体城市内的区县 xx县 quxian = ['陆川县', '博白县', '玉州区', '北流市', '容县'] values3 = [80, 5, 7, 8, 2] map0 = Map("世界地图示例", width=1200, height=600) map0.add("世界地图", attr, value, maptype="world", is_visualmap=True, visual_text_color='#000') # map0.render(path="./04-00世界地图.png") #中国地图 map = Map("中国地图",'中国地图', width=1200, height=600) map.add("", provice, values, visual_range=[0, 50], maptype='china', is_visualmap=True, visual_text_color='#000') # map.show_config() # map.render(path="./data/04-01中国地图.html") #省级地图 map2 = Map("广西各地的靓仔产量图",'单位:%', width=1000, height=600) map2.add('', city, values2, visual_range=[1, 10], maptype='广西', is_visualmap=True, visual_text_color='#000') # map2.show_config() # map2.render(path="./data/04-02河南地图.html") # # 玉林地图 数据为商丘市下的区县 map3 = Map("玉林地图",'', width=1200, height=600) map3.add("", quxian, values3, visual_range=[1, 10], maptype='玉林', is_visualmap=True, visual_text_color='#000') # map3.render(path="./data/04-03商丘地图.html") map0

#加载pyecharts from pyecharts import Geo,Style import pandas as pd #导入excel表举例 df=pd.read_excel('流动人口.xlsx') df.head() #导入自定义的地点经纬度 geo_cities_coords={df.iloc[i]['地点']:[df.iloc[i]['经度'],df.iloc[i]['纬度']] for i in range(len(df))} attr=list(df['地点']) value=list(df['流动人口']/100000) style = Style(title_color= "#fff",title_pos = "center", width = 1200,height = 600,background_color = "#404a59") #可视化 geo = Geo('东莞各个CGI总用户数分布',**style.init_style) geo.add("",attr,value,visual_range=[0,100],symbol_size= 5, visual_text_color= "#fff",is_piecewise = True, is_visualmap= True,maptype = '东莞', visual_split_number= 10, geo_cities_coords=geo_cities_coords) geo.render( '东莞各个CGI总用户数分布.html')

style = Style(title_color= "#fff",title_pos = "center", width = 1200,height = 600,background_color = "#404a59") geo = Geo('东莞各个CGI总用户数分布',**style.init_style) geo.add("",attr,value,visual_range=[0,100], visual_text_color= "#fff",type = 'heatmap', is_visualmap= True,maptype = '东莞', geo_cities_coords=geo_cities_coords) geo.render( '东莞各个CGI总用户数分布.html')
from pyecharts import Map, GeoLines data =[["广州", "北京"],["鄂尔多斯", '南宁'],["招远",'南宁'],["南宁","北京"],["舟山", '南宁'],["齐齐哈尔", '北京'], ["盐城", '北京']] geo =GeoLines("全国主要城市空气质量", "data from pm2.5", title_color="#000", title_pos="center", width=1000, height=600) # attr, value =geo.cast(data) geo.add("",data,geo_effect_color='#6f363f',geo_effect_symbol='circle',geo_normal_color='#fff', is_geo_effect_show=True)#type的可选参数:effectScatter,heatmap geo
Surface3D-曲面波图
from pyecharts import Surface3D import random data = [[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'] surface3D = Surface3D("3D 散点图示例", width=1200, height=600) surface3D.add("", data, is_visualmap=True, visual_range_color=range_color,is_grid3d_rotate=True, grid3d_rotate_speed=25) surface3D