十分钟掌握pyecharts十类顶级图,都很实用!
本文是为了帮助大家快速掌握十大顶级绘图方法,重点解释数据是如何呈现在不同类型图中。
使用pip install pyecharts
安装,安装后的版本为 v1.6
pyecharts
几行代码就能绘制出有特色的的图形,绘图API链式调用,使用方便。
1 仪表盘
from pyecharts import charts# 仪表盘
gauge = charts.Gauge()
gauge.add('Python小例子', [('Python机器学习', 30), ('Python基础', 70.),('Python正则', 90)])
gauge.render(path="./data/仪表盘.html")
print('ok')
仪表盘中共展示三项,每项的比例为30%,70%,90%,如下图默认名称显示第一项:Python机器学习
,完成比例为30%
2 漏斗图
from pyecharts import options as opts
from pyecharts.charts import Funnel, Page
from random import randintdef funnel_base() -> Funnel:c = (Funnel().add("豪车", [list(z) for z in zip(['宝马', '法拉利', '奔驰', '奥迪', '大众', '丰田', '特斯拉'],[randint(1, 20) for _ in range(7)])]).set_global_opts(title_opts=opts.TitleOpts(title="豪车漏斗图")))return cfunnel_base().render('./img/car_funnel.html')
print('ok')
以7种车型及某个属性值绘制的漏斗图,属性值大越靠近漏斗的大端。
3 日历图
import datetime
import randomfrom pyecharts import options as opts
from pyecharts.charts import Calendardef calendar_interval_1() -> Calendar:begin = datetime.date(2019, 1, 1)end = datetime.date(2019, 12, 27)data = [[str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]for i in range(0, (end - begin).days + 1, 2) # 隔天统计]calendar = (Calendar(init_opts=opts.InitOpts(width="1200px")).add("", data, calendar_opts=opts.CalendarOpts(range_="2019")).set_global_opts(title_opts=opts.TitleOpts(title="Calendar-2019年步数统计"),visualmap_opts=opts.VisualMapOpts(max_=25000,min_=1000,orient="horizontal",is_piecewise=True,pos_top="230px",pos_left="100px",),))return calendarcalendar_interval_1().render('./img/calendar.html')
print('ok')
绘制2019年1月1日到12月27日的步行数,官方给出的图形宽度900px
不够,只能显示到9月份,本例使用opts.InitOpts(width="1200px")
做出微调,并且visualmap
显示所有步数,每隔一天显示一次:
4 图(graph)
import json
import osfrom pyecharts import options as opts
from pyecharts.charts import Graph, Pagedef graph_base() -> Graph:nodes = [{"name": "cus1", "symbolSize": 10},{"name": "cus2", "symbolSize": 30},{"name": "cus3", "symbolSize": 20}]links = []for i in nodes:if i.get('name') == 'cus1':continuefor j in nodes:if j.get('name') == 'cus1':continuelinks.append({"source": i.get("name"), "target": j.get("name")})c = (Graph().add("", nodes, links, repulsion=8000).set_global_opts(title_opts=opts.TitleOpts(title="customer-influence")))return c
构建图,其中客户点1与其他两个客户都没有关系(link
),也就是不存在有效边:
5 水球图
from pyecharts import options as opts
from pyecharts.charts import Liquid, Page
from pyecharts.globals import SymbolTypedef liquid() -> Liquid:c = (Liquid().add("lq", [0.67, 0.30, 0.15]).set_global_opts(title_opts=opts.TitleOpts(title="Liquid")))return cliquid().render('./img/liquid.html')
水球图的取值[0.67, 0.30, 0.15]
表示下图中的三个波浪线
,一般代表三个百分比:
6 饼图
from pyecharts import options as opts
from pyecharts.charts import Pie
from random import randintdef pie_base() -> Pie:c = (Pie().add("", [list(z) for z in zip(['宝马', '法拉利', '奔驰', '奥迪', '大众', '丰田', '特斯拉'],[randint(1, 20) for _ in range(7)])]).set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")))return cpie_base().render('./img/pie_pyecharts.html')
7 极坐标
import random
from pyecharts import options as opts
from pyecharts.charts import Page, Polardef polar_scatter0() -> Polar:data = [(alpha, random.randint(1, 100)) for alpha in range(101)] # r = random.randint(1, 100)print(data)c = (Polar().add("", data, type_="bar", label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="Polar")))return cpolar_scatter0().render('./img/polar.html')
极坐标表示为(夹角,半径)
,如(6,94)表示"夹角"为6,半径94的点:
8 词云图
from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolTypewords = [("Python", 100),("C++", 80),("Java", 95),("R", 50),("JavaScript", 79),("C", 65)
]def wordcloud() -> WordCloud:c = (WordCloud()# word_size_range: 单词字体大小范围.add("", words, word_size_range=[20, 100], shape='cardioid').set_global_opts(title_opts=opts.TitleOpts(title="WordCloud")))return cwordcloud().render('./img/wordcloud.html')
("C",65)
表示在本次统计中C语言出现65次
9 系列柱状图
from pyecharts import options as opts
from pyecharts.charts import Bar
from random import randintdef bar_series() -> Bar:c = (Bar().add_xaxis(['宝马', '法拉利', '奔驰', '奥迪', '大众', '丰田', '特斯拉']).add_yaxis("销量", [randint(1, 20) for _ in range(7)]).add_yaxis("产量", [randint(1, 20) for _ in range(7)]).set_global_opts(title_opts=opts.TitleOpts(title="Bar的主标题", subtitle="Bar的副标题")))return cbar_series().render('./img/bar_series.html')
10 热力图
import random
from pyecharts import options as opts
from pyecharts.charts import HeatMapdef heatmap_car() -> HeatMap:x = ['宝马', '法拉利', '奔驰', '奥迪', '大众', '丰田', '特斯拉']y = ['中国','日本','南非','澳大利亚','阿根廷','阿尔及利亚','法国','意大利','加拿大']value = [[i, j, random.randint(0, 100)]for i in range(len(x)) for j in range(len(y))]c = (HeatMap().add_xaxis(x).add_yaxis("销量", y, value).set_global_opts(title_opts=opts.TitleOpts(title="HeatMap"),visualmap_opts=opts.VisualMapOpts(),))return cheatmap_car().render('./img/heatmap_pyecharts.html')
备注:公众号菜单包含了整理了一本AI小抄,非常适合在通勤路上用学习。
往期精彩回顾那些年做的学术公益-你不是一个人在战斗适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(第一部分)备注:加入本站微信群或者qq群,请回复“加群”加入知识星球(4500+用户,ID:92416895),请回复“知识星球”
喜欢文章,点个在看
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!