数据可视化利器 pyecharts

一、基本图形
1.简单柱状图

from pyecharts import Bar, 
page = Page()# 生成页面
attr = ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
v1 = [5,20,36,10,75,90]
v2 = [10,25,8,60,20,80]
bar = Bar("柱状图数据堆叠示例")
bar.add("商家A", attr, v1,is_stack=True)
bar.add("商家B", attr, v2,is_stack=True)
page.add(bar)# step 2
page.render(r'C:\Users\mei-huang\Desktop\render.html')# 指定文件保存位置

2.条形图

from pyecharts import Bar, Scatter3D,Page
page = Page()# st
attr = ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
v1 = [5,20,36,10,75,90]
v2 = [10,25,8,60,20,80]
bar = Bar("柱状图数据堆叠示例")
bar.add("商家A", attr, v1,is_stack=True,mark_point=['average'])
bar.add("商家B", attr, v2,is_stack=True,is_convert=True) #对图表进行转置 
page.add(bar)# step 2
page.render()# step 3
![水平柱状图示例.png](https://upload-images.jianshu.io/upload_images/5063233-ee60761cae02d9ef.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3.3D散点图
from pyecharts import Scatter3D,Page
import random
page = Page()# st
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) #视觉映射和颜色选择
page.add(scatter3D)
page.render()#
散点图.png

4.数据地图1

from pyecharts import Geo
data = [
    ("海门", 9),("鄂尔多斯", 12),("招远", 12),("舟山", 12),("齐齐哈尔", 14),("盐城", 15),
    ("赤峰", 16),("青岛", 18),("乳山", 18),("金昌", 19),("泉州", 21),("莱西", 21),
    ("日照", 21),("胶南", 22),("南通", 23),("拉萨", 24),("云浮", 24),("梅州", 25)]
geo = Geo("全国主要城市空气质量", "data from pm2.5", title_color="#fff", title_pos="center",
width=1200, height=600, background_color='#404a59')
attr, value = geo.cast(data)
geo.add("", attr, value, visual_range=[0, 200], visual_text_color="#fff", symbol_size=15, is_visualmap=True)
geo.show_config()
geo.render() 
数据地图1.png

5.数据地图2

from pyecharts import Map
districts = ['运河区', '新华区', '泊头市', '任丘市', '黄骅市', '河间市', '沧县', '青县', '东光县', '海兴县', '盐山县', '肃宁县', '南皮县', '吴桥县', '献县', '孟村回族自治县']
areas = [109.92, 109.47, 1006.5, 1023.0, 1544.7, 1333.0, 1104.0, 968.0, 730.0, 915.1, 796.0, 525.0, 794.0, 600.0, 1191.0, 387.0]
map_1 = Map("沧州市图例-各区面积", width=1200, height=600)
map_1.add("", districts, areas, maptype='沧州', is_visualmap=True, visual_range=[min(areas), max(areas)],
        visual_text_color='#000', is_map_symbol_show=False, is_label_show=True)
map_1.render()
数据地图2.png

6.饼图

from pyecharts import Pie
attr=["衬衫","羊毛衫","雪纺衫","裤子","帽子"]
v1=[10,20,30,40,50]
pie=Pie("产品销售")
pie.add("z",attr,v1,is_label_show=True)
pie.render()
饼图.png

7.环形图

from pyecharts import Pie
attr=["衬衫","羊毛衫","雪纺衫","裤子","帽子"]
v1=[10,20,30,40,50]
pie=Pie("产品销售-环形图",title_pos='center')
pie.add("z",attr,v1,is_label_show=True,radius=[30,60],label_text_color=None,\
        legend_orient='vertical',legend_pos='right')
pie.render()
环形图.png

8.散点图

from pyecharts import Scatter
v1=list(range(1,5,1))
v2=list(range(1,5,1))
scatter=Scatter("散点图示例")
scatter.add("A",v1,v2)
scatter.add("B",v1[::-1],v2)
scatter.render()
散点图.png

9.仪表盘

from pyecharts import Gauge
gauge=Gauge("指标完成率")
gauge.add("业务指标","完成率",95)
gauge.render()
仪表盘.png

10.漏斗图

from pyecharts import Funnel
attr=["浏览","点击","下载","安装","注册"]
values=[300,200,150,100,80]
funnel=Funnel("用户转化图",title_pos="center") #定义和设置标题
funnel.add("用户",attr,values,is_label_show=True,label_pos="inside",label_text_color="#fff",legend_pos="top")
funnel.render()
漏斗图.png

11.折线图

from pyecharts import Line
line=Line("折线图")
attr=['7-1','7-2','7-3','7-4','7-5']
line.add("最高在线",attr,[725,284,613,852,679],mark_point=["max","min"],mark_line=["average"])
line.add("平均在线",attr,[30,20,40,80,70],legend_pos="20%")
line.render()
折线图.png

12.关系图

from pyecharts import 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')})
graph =Graph("关系图-环形布局示例")
graph.add("", nodes, links, is_label_show=True, repulsion=80000, layout='circular', label_text_color=None)
graph.show_config()
graph.render()

关系图.png

13.折线面积图

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, is_fill=True, line_opacity=0.2, area_opacity=0.4, symbol=None)
line.add("商家B", attr, v2, is_fill=True, area_color='#000', area_opacity=0.3, is_smooth=True)
#line.show_config()
line.render()
折线面积图.png

14.玫瑰饼图

from pyecharts import Pie
attr =["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 =[11, 12, 13, 10, 10, 10]
v2 =[19, 21, 32, 20, 20, 33]
pie =Pie("饼图-玫瑰图示例", title_pos='center', width=900)
pie.add("商品A", attr, v1, center=[25, 50], is_random=True, radius=[30, 75], rosetype='radius')
pie.add("商品B", attr, v2, center=[75, 50], is_random=True, radius=[30, 75], rosetype='area', is_legend_show=False, is_label_show=True)
pie.render()
image.png

15.南丁格尔玫瑰图

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='barAngle', is_stack=True)
polar.add("b", [2, 4, 6, 1, 2, 3, 1], radius_data=radius, type='barAngle', is_stack=True)
polar.add("c", [1, 2, 3, 4, 1, 2, 5], radius_data=radius, type='barAngle', is_stack=True)
polar.show_config()
polar.render()
玫瑰图.png

16.雷达图

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()
雷达图.png

17.其他好玩的图形

import  math
from pyecharts import  Polar
data =[]
for i in range(361):
    t =i /180*math.pi
    r =math.sin(2*t) *math.cos(2*t)
    data.append([r, i])
polar = Polar("极坐标系示例", width=1200, height=600)
polar.add("Color-Flower", data, start_angle=0, symbol=None, axis_range=[0, None], area_color="#f71f24", area_opacity=0.6)
polar.show_config()
polar.render()
极坐标.png

18.词云

from pyecharts import WordCloud
name = [
        'Though','the answer','this question',
        'may at first','seem to border','on the',
        'absurd','reflection','will show','that there',
        'is a','good deal','more in','it than meets','the eye'
        ]
value = [10000,6189,4556,2356,2233,
         1895,1456,1255,981,875,
         542,462,361,265,125]
worldcloud = WordCloud(width = 1300,height = 620)
worldcloud.add('',name,value,word_size_range = [20,100])
worldcloud.render()
词云.png

19.1桑基图 (1)

from   pyecharts  import    Sankey
nodes = [
    {'name': 'category1'}, {'name': 'category2'}, {'name': 'category3'},
    {'name': 'category4'}, {'name': 'category5'}, {'name': 'category6'},
]
links = [
    {'source': 'category1', 'target': 'category2', 'value': 10},
    {'source': 'category2', 'target': 'category3', 'value': 15},
    {'source': 'category3', 'target': 'category4', 'value': 20},
    {'source': 'category5', 'target': 'category6', 'value': 25}
]
sankey = Sankey("桑基图示例", width=1200, height=600)
sankey.add("sankey", nodes, links,
           line_opacity=0.4, #不透明度,颜色的深浅
           line_curve=0.9, #曲线的扭曲程度
           line_color='source',
           is_label_show=True, label_pos='right') #是否显示标签,标签的位置
sankey.render()
19.2桑基图2
桑基图.png
from   pyecharts  import    Sankey
nodes =[
{"name":"Andriod3"},
{"name":"服务频道2"},
{"name":"其它2"},
{"name":"服务频道4"},
{"name":"服务频道3"},
{"name":"乙方2"},
{"name":"乙方3"},
{"name":"其它3"},
{"name":"Andriod4"},
{"name":"Andriod2"},
{"name":"其它4"},
{"name":"Andriod1"},
{"name":"乙方4"},
{"name":"乙方5"},
{"name":"Andriod5"},
{"name":"服务频道5"},
{"name":"其它5"},
]
links = [
{"source":"Andriod1","target":"Andriod2","value":"65"},
{"source":"乙方3","target":"Andriod4","value":"1"},
{"source":"乙方2","target":"Andriod3","value":"1"},
{"source":"服务频道3","target":"Andriod4","value":"2"},
{"source":"Andriod2","target":"Andriod3","value":"48"},
{"source":"服务频道2","target":"其它3","value":"1"},
{"source":"乙方2","target":"服务频道3","value":"1"},
{"source":"Andriod3","target":"Andriod4","value":"35"},
{"source":"Andriod2","target":"服务频道3","value":"3"},
{"source":"Andriod4","target":"服务频道5","value":"3"},
{"source":"Andriod3","target":"乙方4","value":"1"},
{"source":"Andriod1","target":"服务频道2","value":"6"},
{"source":"服务频道2","target":"服务频道3","value":"2"},
{"source":"其它2","target":"Andriod3","value":"1"},
{"source":"服务频道4","target":"Andriod5","value":"1"},
{"source":"Andriod2","target":"乙方3","value":"1"},
{"source":"Andriod1","target":"乙方2","value":"2"},
{"source":"服务频道2","target":"Andriod3","value":"1"},
{"source":"Andriod1","target":"其它2","value":"1"},
{"source":"乙方4","target":"Andriod5","value":"1"},
{"source":"服务频道3","target":"服务频道4","value":"3"},
{"source":"Andriod4","target":"Andriod5","value":"26"},
]
sankey = Sankey("桑基图示例", width=1200, height=600)
sankey.add("sankey", nodes, links,
           line_opacity=0.4, #不透明度,颜色的深浅
           line_curve=0.9, #曲线的扭曲程度
           line_color='source',
           is_label_show=True, label_pos='right') #是否显示标签,标签的位置
sankey.render()
桑基图2.png

二、基本的类
1.Overlap.add()类,组合图形
add(chart,
xaxis_index = 0,
yaxis_index = 0,
is_add_xaxis = False,
is_add_yaxis = False)
属性:
is_add_xaxis / is_add_yaxis 是否新增坐标X/Y 默认 False

from pyecharts import Bar,Line,Overlap
attr = ['A','B','C','D','E','F']
v1 = [10,20,30,40,50,60]
v2 = [38,28,35,58,65,100]
bar = Bar('Line - Bar示例')
bar.add('bar',attr,v1)
line = Line()
line.add('line',attr,v2)

overlop = Overlap()
overlop.add(bar,yaxis_index = 10)
overlop.add(line,is_add_yaxis=False) #是否增加新y轴
overlop.render()
重叠组合图.png

2.Grid()类图形左右组合

from pyecharts import Bar,Line,Grid
attr = ['A','B','C','D','E','F']
v1 = [10,20,30,40,50,60]
v2 = [38,28,35,58,65,100]
bar = Bar('Line - Bar示例')
bar.add('bar',attr,v1)
line = Line()
line.add('line',attr,v2)

grid = Grid()
grid.add(bar,grid_right="50%")
grid.add(line,grid_left="60%") #是否增加新y轴
grid.render()
Grid左右组合.png

3.Page()类在网页上竖直排列

#生成数据点图
from pyecharts import Bar,Line,Page
attr = ['A','B','C','D','E','F']
v1 = [10,20,30,40,50,60]
v2 = [38,28,35,58,65,100]
bar = Bar('Line - Bar示例')
bar.add('bar',attr,v1)
line = Line()
line.add('line',attr,v2)
page = Page()
page.add(bar)
page.add(line) #是否增加新y轴
page.render()
page类竖直排列.png
  1. 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(width=800,height=600
                    ,is_auto_play=True #是否自动播放
                    ,is_loop_play= True #是否循环播放
                    ,is_timeline_show=True  #是否现实时间组件
                   ,is_rewind_play=False  #是否方向播放
                    ,timeline_play_interval=1000  #跳动的时间间隔
                    ,timeline_bottom=0)  #是否循环播放
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.render()
在时间维度.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • 图表控件库 MPAndroidChart 的使用 使用方法 项目源码地址,包含了很多类型的图标 https://g...
    jinchuang阅读 813评论 0 0
  • 开始 ####安装 为了使用 LineChart, BarChart, ScatterChart, CandleS...
    帅气的猪猪阅读 8,430评论 0 1
  • 累死累活做了很久很久,找资料,填表格,结果快做完的时候说,你那数据现成,定好名单发给你就成……为什么不早说! 看你...
    长拾宜阅读 319评论 0 0
  • 关于和领导处理关系这个问题,很多人并没有把他摆到战略性的高度来看待,仅仅认为是一种工作上的关系,实际上这种看法和认...
    般若无相阅读 239评论 0 0
  • 在这个世界上,每天都在发生无穷无尽的事情,或稀奇古怪令人匪夷所思,或惊险离奇让人膛目结舌,亦或平淡的像一碗白开水,...
    门后有人阅读 370评论 2 1