20个精美图表,教你玩转 Pyecharts 可视化
作者 |俊欣
来源 |关于数据分析与可视化
本篇文章我们将继续聚焦c模块并且用它来绘制精美的图表,希望读者在看完之后会有不少收获
01
内嵌饼状图
内接一个环状的饼图,里面还有一个饼状的图
(Pie().add(series_name="访问来源",data_pair=[list(z) for z in zip(Faker.choose(), Faker.values())],radius=[0, "30%"],label_opts=opts.LabelOpts(position="inner"),).add(series_name="访问来源",radius=["40%", "55%"],data_pair=[list(z) for z in zip(Faker.choose(), Faker.values())],).set_global_opts(legend_opts=opts.LegendOpts(pos_left="15%", orient="vertical", pos_top="10%")).set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
)).render("nested_pies.html")
)
02
环形饼图
c = (Pie().add("",[list(z) for z in zip(Faker.choose(), Faker.values())],radius=["50%", "75%"],).set_global_opts(title_opts=opts.TitleOpts(title="Pie-radius示例"),legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")).render("pie_radius_test.html")
)
03
玫瑰式饼状图
c = (Pie().add("",[list(z) for z in zip(Faker.choose(), Faker.values())],radius=["40%", "75%"],center=["35%", "50%"],rosetype="radius",label_opts=opts.LabelOpts(is_show=False),).set_global_opts(title_opts=opts.TitleOpts(title="饼图-玫瑰图示例")).render("pie_rosetype_test.html")
)
04
多个饼状图合集
c = (Pie().add("",[list(z) for z in zip(["古装", "其他"], [35, 65])],center=["20%", "30%"],radius=[50, 80],label_opts=new_label_opts(),).add("",[list(z) for z in zip(["动作", "其他"], [24, 76])],center=["55%", "30%"],radius=[50, 80],label_opts=new_label_opts(),).add("",[list(z) for z in zip(["爱情", "其他"], [10, 90])],center=["20%", "70%"],radius=[50, 80],label_opts=new_label_opts(),).add("",[list(z) for z in zip(["惊悚", "其他"], [20, 80])],center=["55%", "70%"],radius=[50, 80],label_opts=new_label_opts(),).set_global_opts(title_opts=opts.TitleOpts(title="Pie-多饼图基本示例"),legend_opts=opts.LegendOpts(type_="scroll", pos_top="30%", pos_left="70%", orient="vertical"),).render("mutiple_pie.html")
)
05
雷达图
雷达图可以帮助我们查看各个维度之下的数据情况,例如
c = (Radar().add_schema(schema=[opts.RadarIndicatorItem(name="A", max_=8500),opts.RadarIndicatorItem(name="B", max_=15000),opts.RadarIndicatorItem(name="C", max_=35000),opts.RadarIndicatorItem(name="D", max_=38000),opts.RadarIndicatorItem(name="E", max_=55000),opts.RadarIndicatorItem(name="F", max_=25000),]).add("计划设想", v1).add("实际情况", v2).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(legend_opts=opts.LegendOpts(),title_opts=opts.TitleOpts(title="雷达图示例"),).render("radar_test.html")
)
06
散点图
(Scatter().add_xaxis(xaxis_data=Faker.choose()).add_yaxis(series_name="",y_axis=Faker.values(),symbol_size=30,label_opts=opts.LabelOpts(is_show=True),).set_series_opts().set_global_opts(yaxis_opts=opts.AxisOpts(axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True),),tooltip_opts=opts.TooltipOpts(is_show=True),).render("basic_scatter_chart.html")
)
07
散点图+渐变色
c = (Scatter().add_xaxis(Faker.choose()).add_yaxis("商家1", Faker.values(), symbol_size=30,label_opts=opts.LabelOpts(is_show=True),).set_global_opts(title_opts=opts.TitleOpts(title="散点图-颜色分段"),visualmap_opts=opts.VisualMapOpts(max_=150),).render("scatter_visualmap_color_test.html")
)
或者我们根据数据的大小来改变散点的大小
c = (Scatter().add_xaxis(Faker.choose()).add_yaxis("商家1", Faker.values()).add_yaxis("商家2", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="散点图-点状大小不同"),visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),).render("scatter_visualmap_size_test.html")
)
08
象形柱状图
c = (PictorialBar().add_xaxis(Faker.choose()).add_yaxis("",Faker.values(),label_opts=opts.LabelOpts(is_show=True),symbol_size=20,symbol_repeat="fixed",symbol_offset=[0, 0],is_symbol_clip=True,symbol=SymbolType.ROUND_RECT,).reversal_axis().set_global_opts(title_opts=opts.TitleOpts(title="象形柱状图示例"),xaxis_opts=opts.AxisOpts(is_show=True),yaxis_opts=opts.AxisOpts(axistick_opts=opts.AxisTickOpts(is_show=True),axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(opacity=0)),),).render("pictorialbar_test.html")
)
09
K线图+时间轴
c = (Kline().add_xaxis(["2021/5/{}".format(i + 1) for i in range(31)]).add_yaxis("K线图", data).set_global_opts(xaxis_opts=opts.AxisOpts(is_scale=True),yaxis_opts=opts.AxisOpts(is_scale=True,splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),),datazoom_opts=[opts.DataZoomOpts()],title_opts=opts.TitleOpts(title="k线图+时间轴示例"),).render("k线图+时间轴_test.html")
)
当然这个时间轴既可以放在外面也可以放在里面
c = (Kline().add_xaxis(["2021/5/{}".format(i + 1) for i in range(31)]).add_yaxis("K线图", data).set_global_opts(xaxis_opts=opts.AxisOpts(is_scale=True),yaxis_opts=opts.AxisOpts(is_scale=True,splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),),datazoom_opts=[opts.DataZoomOpts(type_="inside")],title_opts=opts.TitleOpts(title="K线图+时间轴示例"),).render("K线图+时间轴示例_inside.html")
)
10
区域地图
c = (Map().add("商家A", [list(z) for z in zip(["杭州市", "宁波市", "舟山市", "台州市", "温州市", "丽水市","金华市", "衢州市", "绍兴市", "湖州市", "嘉兴市"],Faker.values())], "浙江").set_global_opts(title_opts=opts.TitleOpts(title="Map浙江地图-Test"), visualmap_opts=opts.VisualMapOpts()).render("map_zhejiang.html")
)
11
区域地图+热力图
c = (Geo().add_schema(maptype="浙江").add("geo",[list(z) for z in zip(["杭州市", "宁波市", "舟山市", "台州市", "温州市", "丽水市","金华市", "衢州市", "绍兴市", "湖州市", "嘉兴市"], Faker.values())],type_=ChartType.HEATMAP,).set_series_opts(label_opts=opts.LabelOpts(is_show=True)).set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="Geo-浙江地图")).render("geo_zhejiang.html")
)
12
地图+颜色分段
c = (Map().add("商家1", [list(z) for z in zip(Faker.provinces, Faker.values())], "china").set_global_opts(title_opts=opts.TitleOpts(title="地图 + 颜色分段(连续型)"),visualmap_opts=opts.VisualMapOpts(max_=150),).render("map_visual_test.html")
)
13
世界地图
c = (Map().add("商家1", [list(z) for z in zip(Faker.country, Faker.values())], "world").set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="Pyecharts-世界地图"),visualmap_opts=opts.VisualMapOpts(max_=200),).render("map_world_test.html")
)
14
地图+散点图
地图+涟漪散点图的示例
c = (Geo().add_schema(maptype="china").add("geo",[list(z) for z in zip(Faker.provinces, Faker.values())],type_=ChartType.EFFECT_SCATTER,).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="地图+涟漪散点图示例")).render("geo_effectscatter_test.html")
)
15
地图+方向箭头
c = (Geo().add_schema(maptype="china",itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="#111"),).add("",[list(z) for z in zip(Faker.provinces, Faker.values())],type_=ChartType.EFFECT_SCATTER,color="white",).add("geo",[("宁波", "南京"), ("宁波", "北京"), ("宁波", "兰州"), ("宁波", "拉萨"), ("宁波", "银川"), ("宁波", "武汉")],type_=ChartType.LINES,effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW, symbol_size=6, color="blue"),linestyle_opts=opts.LineStyleOpts(curve=0.2),).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="Geo-Lines-background")).render("geo_lines_background_test.html")
)
16
关系图
nodes = [opts.GraphNode(name="结点A", symbol_size=10),opts.GraphNode(name="结点B", symbol_size=30),opts.GraphNode(name="结点C", symbol_size=20),opts.GraphNode(name="结点D", symbol_size=50),opts.GraphNode(name="结点E", symbol_size=70),
]
links = [opts.GraphLink(source="结点A", target="结点B"),opts.GraphLink(source="结点B", target="结点C"),opts.GraphLink(source="结点C", target="结点D"),opts.GraphLink(source="结点D", target="结点E"),opts.GraphLink(source="结点E", target="结点A"),
]
c = (Graph().add("", nodes, links, repulsion=2000).set_global_opts(title_opts=opts.TitleOpts(title="关系图")).render("graph_test1.html")
)
17
柱状图+水印
pyecharts还可以给图表增添水印
c = (Bar(init_opts=opts.InitOpts(width='900px', height='600px')).add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title=""),graphic_opts=graphics_lst,)
)
c.render("watermark.html")
18
饼图+时间轴组件
我们可以在饼图下面加一个时间轴,看一下随着时间的变化,各个类目是怎么来变化的
attr = Faker.choose()
tl = Timeline()
for i in range(2015, 2022):pie = (Pie().add("商家A",[list(z) for z in zip(attr, Faker.values())],center=["50%", "50%"], radius=["40%", "60%"],).set_global_opts(title_opts=opts.TitleOpts("某商店{}年营业额".format(i))))tl.add(pie, "{}年".format(i))
tl.render("timeline_pie_test.html")
19
横向柱状图 + 时间轴组件
tl = Timeline()
for i in range(2015, 2022):bar = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家1", Faker.values(), label_opts=opts.LabelOpts(position="right")).add_yaxis("商家2", Faker.values(), label_opts=opts.LabelOpts(position="right")).reversal_axis().set_global_opts(title_opts=opts.TitleOpts("时间轴 + 横向柱状图 (时间: {} 年)".format(i))))tl.add(bar, "{}年".format(i))
tl.render("timeline_bar_reversal_test.html")
20
地图 + 时间轴组件
tl = Timeline()
for i in range(2015, 2022):map0 = (Map().add("商家1", [list(z) for z in zip(Faker.provinces, Faker.values())], "china").set_global_opts(title_opts=opts.TitleOpts(title="{}年数据".format(i)),visualmap_opts=opts.VisualMapOpts(max_=200),))tl.add(map0, "{}年".format(i))
tl.render("timeline_map.html")
21
柱状图 + 自定义标识
有时候我们需要将最大、最小值以及平均值标识出来,于是乎
c = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家1", Faker.values()).add_yaxis("商家2", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="直方图 + 标识特殊值(指定类型)")).set_series_opts(label_opts=opts.LabelOpts(is_show=False),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值"),opts.MarkPointItem(type_="average", name="平均值"),]),).render("bar_markpoint_test.html")
)
22
柱状图 + 渐变色
c = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家1", Faker.values(), category_gap="50%").set_series_opts(itemstyle_opts={"normal": {"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(0, 244, 255, 1)'}, {offset: 1,color: 'rgba(0, 77, 167, 1)'}], false)"""),"barBorderRadius": [50, 50, 50, 50],"shadowColor": "rgb(0, 160, 221)",}}).set_global_opts(title_opts=opts.TitleOpts(title="圆角直方图-渐变圆柱示例")).render("bar_border_test.html")
)
往
期
回
顾
资讯
以软代硬能否另辟蹊径?
资讯
开箱即用的工业级NLP开发库
资讯
100亿张照片泄露!通过照片监视你
资讯
机器人能帮助缝制T恤吗?
分享
点收藏
点点赞
点在看
相关文章:

【SICP练习】136 练习3.67
练习3-67 原文 Exercise 3.67. Modify the pairs procedure so that (pairs integers integers) will produce the stream of all pairs of integers (i,j) (without the condition i < j). Hint: You will need to mix in an additional stream. 代码 (define (all-pairs s…

glibc方式安装mysql
下载安装包 mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz创建mysql用户useradd -r mysql -s /sbin/nologin解压文件tar -zxvf mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz -C /opt/改名mv /opt/mysql-5.6.38-linux-glibc2.12-x86_64/ /opt/mysql-5.6创建数据目录mkdir /data更…

淘宝网7年变化图--建议非美工UED人员也看看
从2003年开始,这么几年间淘宝网首页截图,UED美工和开发人员都可以看看。图片来自www.infoq.com网站 的PPT

Github 一夜爆火:这份金九银十 Java 面试手册我给跪了
这几天给筒子们整理了一份《Java面试手册》,106页,目前大约6万字左右,初衷也很简单,就是希望在面试的时候能够帮助到大家,减轻大家的负担和节省时间。废话不多说,本手册目前为第一版,后续慢慢也…

a different object with the same identifier value was already associated with the session
当出现a different object with the same identifier value was already associated with the session时,一般是因为在hibernate中同一个session里面有了两个相同标识但是是不同实体。 我直接将接受需要比较的id的list<ab>换成了list<object[]>,再直接将…
【转】unity3d 在UGUI中制作自适应调整大小的滚动布局控件
转自 http://blog.csdn.net/rcfalcon/article/details/43459387 在游戏中,我们很多地方需要用到scroll content的概念:我们需要一个容器,能够指定布局方式(比如横排排列、竖排排列、网格排列)等。然后我们向其中填充内…

(转)径向模糊效果shader
转自:http://blog.csdn.net/xoyojank/article/details/5146297 最先在这里看到:http://www.gamerendering.com/2008/12/20/radial-blur-filter/ 这效果在鬼泣4中切换场景时见过, 极品飞车12的运动模糊也有这种感觉. 原理: 确定一个中心点(如0.5, 0.5), 跟当前像素连…

初次体验hiphop-php
facebook在github上发布了hiphop-php的源代码。之前听说这玩意能把php代码翻译成c代码,然后带来巨大的性能提升,所以第一时间编译了一份hiphop-php。 我的机器环境是 Centos 5.3 x86_648G内存Intel(R) Xeon(R) CPU E5420 2.50GHz 安装注意事项 编译…

MySQL之父等国际数据库掌门人齐聚,1024 程序员节全体大会重磅官宣!
10月23-24日,由CSDN、长沙市政府及多家机构联合主办的第二届“长沙中国1024程序员节”(1024.csdn.net)将盛大举行。今年程序员节活动囊括:岳麓书院尖峰对话,2021技术英雄会,9场热门技术主题论坛/专场、第16…

通过yum安装配置lamp
1、安装httpdyum install httpd创建测试文件cd /var/www/htmlvim index.php加入以下内容<html><head><title>PHP Page</title></head><body><h1>PHP start</h1> <?phpphpinfo(); ?><h1>PHP end</h1> <…

PHP“Cannot use object of type stdClass as array”
php再调用json_decode从字符串对象生成json对象时,如果使用[]操作符取数据,会得到下面的错误错误:Cannot use object of type stdClass as array产生原因:展开 -PHP$res json_decode($res);$res[key]; //把 json_decode() 后的对…

RMAN_学习笔记1_RMAN Structure概述和体系结构
2014-12-23 Created By BaoXinjian 一、摘要 是一种用于集备份(backup)、还原(restore)和恢复(recover)数据库于一体的Oracle 工具,支持命令行及图形界面操作 能够备份整个数据库、表空间、数据文件、控制文件、归档文件以及Spfile参数文件。 支持增量数据块级别的备…

全球缺芯大潮中,以软代硬能否另辟蹊径?
在5G和人工智能的技术浪潮如约而至以后,业内人士无不对IoT产业的未来报以极大的期待。以人工智能和家居设备为基础,再加上算力与网络支持,有理由相信未来IoT相关产业必将迎来爆发。然而今年,席卷全球的芯片产能不足问题影响到了各…

Xtrabackup实现数据的备份与恢复
Xtrabackup介绍Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份…

最简单的CI框架入门示例--数据库取数据
这个写给初学者看,这是最简单可以调通的例子,网上很多例子其实初学者本地跑不通,缺这少那。 1.下载CI框架(自己找)2.配置 database.php配置: 为数据库服务器设置 connection 参数: $db[defau…

ST-GCN 实现人体姿态行为分类
作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 引用 人体行为识别是计算机视觉及机器学习方面的热门研究领域。它在对视频中的人类行为进行运动分析、行为识别乃至延伸至人机交互领域都有着非常广泛的应用。研究初期,人体行为识别主要是以…

【原创】Kakfa utils源代码分析(三)
Kafka utils包最后一篇~~~ 十五、ShutdownableThread.scala可关闭的线程抽象类! 继承自Thread同时还接收一个boolean变量isInterruptible表明是否允许中断。既然是可关闭的,因此一定不是守护线程,而是一个用户线程(不会阻塞JVM关闭)。提供的方…

Oracle的分页查询
为什么80%的码农都做不了架构师?>>> 因为Oracle不像MySQL一样有limit函数来实现分页查找,oracle要实现分页查询可使用关键字rownum来处理。使用rownum有以下几点需要注意: 1、ROWNUM存在使用规则,在单个子查询中&…

微软成功抵御峰值高达 2.4Tbps 的 DDoS 攻击
整理 | 祝涛 出品 | CSDN(ID:CSDNnews)微软表示,他们成功抵御了一场发生于8月份的2.4Tbps分布式拒绝服务(DDoS)攻击,这次攻击超过了去年针对亚马逊Web服务的2.3Tbps最大攻击。这场攻击持续…

百度吴甜:首席AI架构师培养计划持续为行业输送高端复合型AI人才
CSDN 导语: 随着 AI 技术的发展,关注 AI 的开发者与日俱增:据 CSDN 发布的《中国 AI 应用开发者报告》显示,在 CSDN 的注册开发者中,689 万开发者有阅读、撰写和研究 AI 技术行为,其中精准聚焦 AI 学习和应…

Htaccess文件是什么以及Windows下自由创建.htaccess文件的N种方法
.htaccess是什么 概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。 通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访…

Linux grep,egrep及相应的正则表达式用法详解
linux在进行文本处理过程中的文本搜索工具称为正则表达式。文本搜索工具有grep、egrep、fgrep,egrep为正则表达式的扩展正则表达式,fgrep用于搜索文本字符串,与 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式。grep的含…

Java GC 日志解析
JVM 在Java应用程序优化中是不可缺少的一大重项,如何合理配置Java参数,如果验证配置参数的有效性,从GC日志中可以获得很重要的提示,以下是笔者对GC垃圾收集器默认开启的组合日志的部分的解析,希望能帮到想学习的同学O(…

MySQL 备份和恢复策略
在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。本文主要对MyISAM表做备份恢复。 备份策略一:直接拷贝数据库文件(不推荐ÿ…

zookeeper学习记录
2019独角兽企业重金招聘Python工程师标准>>> 背景 前段时间看了S4流计算引擎,里面使用到了zookeeper进行集群管理,所以也就花了点时间研究了下zookeeper,不求看懂所有源码,但求了解其实现机制和原理,清楚其…
Ubuntu的apt-get使用国内的源
1、复制原文件备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2、打开清华大学TUNA官网发布的Ubuntu 镜像使用帮助。 3、复制下面框中的内容,打开自己的Ubuntu系统。 4、 将框中的内容替换掉原来的所有内容 sudo gedit /etc/apt/sources.list 5、 进…

51单片机实现对24C02进行页写、顺序读取并显示验证
源:51单片机实现对24C02进行页写、顺序读取并显示验证 //************************************************************************************* //**程序名称:51单片机实现对24C02进行页写、顺序读取并显示验证 //**编写人:**** //**修…

配置MySQL主从复制
MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从…
PHP 单元测试
本文首发于 https://jaychen.cc/article/34作者 Jaychen朋友,你听说过安。。。不是,写过单元测试吗。 单元测试是开发过程中必不可少的一环,一个项目有良好的单元测试代码,重构的勇气都大很多。这次写一篇小文来介绍一下 PHP 的单…

CI框架如何删除地址栏的 index.php
默认 CI 框架显示地址是 http://localhost/ci/index.php/test/ 去掉index.php这样会更好些。1.修改Http.conf的 LoadModule rewrite_module modules/mod_rewrite.so 去掉注释2.ci根目录增加.htaccess文件 <IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /ci#Remov…