利用Pyecharts玩转饼图

饼图在实际的可视化要求中是非常常见的,它能够很好显示个体的占比或者数据情况。本文中讲解的是如何利用 pyecharts 来绘制各种满足不同需求的饼图,包含:基础饼图+改变饼图位置颜色

环状饼图

内嵌饼图

多饼图

玫瑰图

开始之前,先来看看部分效果:

注:文末提供本文的源码获取方式,供大家练习

导入库

本文中使用的还是 pandas+pyecharts 组合,在jupyter notebook 中进行绘图。首先导入所需要的各种库:

基础饼图

模拟数据

我们自行模拟了一份消费数据,包含5个消费项目:住宿+餐饮+交通+服装+红包,具体数据如下:# 生成数据

df = pd.DataFrame({"消费":["住宿","餐饮","交通","服装","红包"],

"数据":[2580,1300,500,900,1300]

})

df

将消费和数据中的具体数据转成列表形式:

绘图

代码的具体解释见注释:c = (

Pie()

.add("", [list(z) for z in zip(x_data, y_data)])   # zip函数两个部分组合在一起list(zip(x,y))-----> [(x,y)]

.set_global_opts(title_opts=opts.TitleOpts(title="Pie-月度开支"))  # 标题

.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))  # 数据标签设置

)

c.render_notebook()

改变位置和颜色

上面生成的饼图是使用 pyecharts 自带的颜色和位置,有时候我们需要做下改变:

现在我们生成的饼图如下显示:颜色变成了我们设置的颜色

位置更靠左了视频效果如下:

改变图例位置

数据生成

上面的图例是水平方向排列的,而且个数比较少。如果我们的图例比较多,需要改成竖直方向,同时实现翻页滚动功能。

在这里我们使用的是 pyecharts 中自带的数据:

1、Faker.choose() :是用来生成数据标签,有3种不同的取值情况

2、Faker.values() 是用来生成具体的数据,随机生成

绘图

还是通过上面的绘图方法,加入数据同时添加各种配置项:视频效果如下:

环状饼图

环状饼图主要是通过 add 方法中的 radius 参数来实现的。实现过程如下:x_data = ["小明", "小红", "张三", "李四", "王五"]

y_data = [335, 310, 234, 135, 548]

c = (

Pie(init_opts=opts.InitOpts(width="1600px", height="1000px"))   # 图形的大小设置

.add(

series_name="访问来源",

data_pair=[list(z) for z in zip(x_data, y_data)],

radius=["15%", "50%"],   # 饼图内圈和外圈的大小比例

center=["30%", "40%"],   # 饼图的位置:左边距和上边距

label_opts=opts.LabelOpts(is_show=True),   # 显示数据和百分比

)

.set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", orient="vertical"))   # 图例在左边和垂直显示

.set_series_opts(

tooltip_opts=opts.TooltipOpts(

trigger="item", formatter="{a}

{b}: {c} ({d}%)"

),

)

c.render_notebook()

可以看到图形的中间是空的

内嵌饼图

内嵌饼图是指将两个甚至多个环状饼图放在一起,实现代码过程如下:import pyecharts.options as opts

from pyecharts.charts import Pie

from pyecharts.globals import ThemeType

# 内部饼图

inner_x_data = ["直达", "营销广告", "搜索引擎","产品"]

inner_y_data = [335, 679, 548, 283]

inner_data_pair = [list(z) for z in zip(inner_x_data, inner_y_data)]

# [['直达', 335], ['营销广告', 679], ['搜索引擎', 1548], [‘产品’, 283]]

# 外部环形(嵌套)

outer_x_data = ["搜索引擎", "邮件营销", "直达", "营销广告", "联盟广告", "视频广告", "产品", "百度", "谷歌","邮件营销", "联盟广告"]

outer_y_data = [335, 135, 147, 102, 220, 310, 234, 135, 648, 251]

outer_data_pair = [list(z) for z in zip(outer_x_data, outer_y_data)]

c = (

# 初始化

Pie(init_opts=opts.InitOpts(

width="900px",  # 设置图形大小

height="800px",

theme=ThemeType.SHINE))  # 选择主题

# 内部饼图

.add(

series_name="版本3.2.1",  # 图形名称

center=["50%", "35%"],  # 饼图位置

data_pair=inner_data_pair,  # 系列数据项,格式为 [(key1, value1), (key2, value2)]

radius=["25%", "40%"],  # 饼图半径 数组的第一项是内半径,第二项是外半径

label_opts=opts.LabelOpts(position='inner'), # 标签设置在内部

)

# 外部嵌套环形图

.add(

series_name="版本3.2.9",  # 系列名称

center=["50%", "35%"],  # 饼图位置

radius=["40%", "60%"],  # 饼图半径 数组的第一项是内半径,第二项是外半径

data_pair=outer_data_pair, # 系列数据项,格式为 [(key1, value1), (key2, value2)]

# 标签配置项

label_opts=opts.LabelOpts(

position="outside",

formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",

background_color="#eee",

border_color="#aaa",

border_width=1,

border_radius=4,

rich={

"a": {"color": "#999",

"lineHeight": 22,

"align": "center"},

"abg": {

"backgroundColor": "#e3e3e3",

"width": "100%",

"align": "right",

"height": 22,

"borderRadius": [4, 4, 0, 0],

},

"hr": {

"borderColor": "#aaa",

"width": "100%",

"borderWidth": 0.5,

"height": 0,

},

"b": {"fontSize": 16, "lineHeight": 33},

"per": {

"color": "#eee",

"backgroundColor": "#334455",

"padding": [2, 4],

"borderRadius": 2,

},

},

),

)

# 全局配置项

.set_global_opts(

xaxis_opts = opts.AxisOpts(is_show = False),   #隐藏X轴刻度

yaxis_opts = opts.AxisOpts(is_show = False),    #隐藏Y轴刻度

legend_opts = opts.LegendOpts(is_show = True),  #隐藏图例

title_opts = opts.TitleOpts(title = None),    #隐藏标题

)

# 系统配置项

.set_series_opts(

tooltip_opts=opts.TooltipOpts(

trigger="item",

formatter="{a}

{b}: {c} ({d}%)"

),

label_opts=opts.LabelOpts(is_show=True)  # 隐藏每个触角标签

)

)

c.render_notebook()视频效果如下:

python饼图 立体_【Python基础】惊叹,Pyecharts绘制饼图原来可以如此漂亮!相关推荐

  1. 【Python基础】惊叹,Pyecharts绘制饼图原来可以如此漂亮!

    来源:Python数据之道 作者:Peter 整理:Lemon 利用Pyecharts玩转饼图 饼图在实际的可视化要求中是非常常见的,它能够很好显示个体的占比或者数据情况.本文中讲解的是如何利用 py ...

  2. 用python画大白_[Python][可视化]matplotlib基础入门

    Python包matplotlib画图入门,以折线图为例. 在使用之前,导入matplotlib包,设置中文字体 import matplotlib.pyplot as plt %matplotlib ...

  3. 0基础学好python难不难_零基础学习Python难不难?Python有什么优势?

    原标题:零基础学习Python难不难?Python有什么优势? Python是一种计算机程序设计语言.首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个 ...

  4. 为什么用python写爬虫_零基础,是怎么开始写Python爬虫的

    刚开始接触爬虫的时候,简直惊为天人,十几行代码,就可以将无数网页的信息全部获取下来,自动选取网页元素,自动整理成结构化的文件. 利用这些数据,可以做很多领域的分析.市场调研,获得很多有价值的信息.这种 ...

  5. python问题分享_零基础入门Python常见问题分享

    零基础入门Python常见问题有哪些?作为经常混迹在各大Python技术论坛的小编而言,见到最多的话题就是:学习Python难不难?零基础可以学习Python吗?如何学习Python?等等.今天小编就 ...

  6. python 智能造句_[零基础学Python]正规地说一句话

    小孩子刚刚开始学说话的时候,常常是一个字一个字地开始学,比如学说"饺子",对他/她来讲,似乎有点难度,大人也聪明,于是就简化了,用"饺饺"来代替,其实就是让孩子 ...

  7. 小白到学会python要多久_零基础小白多久能学会python

    学习任何一门编程语言,都是为了去实现一个个项目,来解决实际的问题.无论项目是大还是小,都关联着许多知识与技能. 例如要写一个「文件资源管理器」的应用,就需要MVC设计模式.组件化构建.对象集合及操作. ...

  8. 想学python怎么学习_没有基础的想转行学习Python怎么学

    原标题:没有基础的想转行学习Python怎么学 无意中听朋友说:Python是一门神奇的语言 ,他建议我去学习Python,因为 Python 作为一门高级语言,通俗易懂,所以我就锁定了目标--学 P ...

  9. 惊叹,Pyecharts绘制饼图原来可以如此漂亮!

    来源:Python数据之道 作者:Peter 整理:Lemon 利用Pyecharts玩转饼图 饼图在实际的可视化要求中是非常常见的,它能够很好显示个体的占比或者数据情况.本文中讲解的是如何利用 py ...

  10. python如何绘制饼图_Python使用Plotly绘图工具,绘制饼图

    今天我们来学习一下如何使用Python的Plotly绘图工具,绘制饼图 使用Plotly绘制饼图的方法,我们需要使用graph_objs中的Pie函数 函数中最常用的两个属性values,用于赋值给需 ...

最新文章

  1. 使用appium做自动化测试时,send_keyss只能输入字母数字,无法输入中文
  2. 基于大数据的Uber数据实时监控(Part 2:Kafka和Spark Streaming)
  3. 写下今年1024的一篇文章
  4. mysql5.6 函数索引_聊聊MySQL中的索引
  5. centos7.3安装tomcat报Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  6. VTK:图像高斯平滑用法实战
  7. Python面向对象案例汇总
  8. mysql不复制数据_windows mysql不停止服务复制数据
  9. java 斐波那契编程_Java实现Fibonacci(斐波那契)取余的示例代码
  10. 浅谈Nginx性能调优
  11. Spring Cloud Zuul--服务网关
  12. 计算机硬盘不识别u盘启动,快启动U盘启动pe系统无法识别硬盘怎么办?
  13. php 松散耦合,PHP依赖注入和松散耦合
  14. [附源码]java毕业设计户籍管理系统
  15. windows下Git连接使用
  16. JVM-三色标记算法
  17. Javaweb_文件上传
  18. workbench应力应变曲线_ansys workbench中的7种应力结果如何理解
  19. 未来微型计算机发展趋势,简述什么是单片机(单片机未来发展趋势)
  20. 阿里云服务器优惠活动地址

热门文章

  1. 彻底解决win10出现的无法访问网络位置*:\XXXXX\XXXXX的问题
  2. C语言实现1/1-1/2+1/3-...-1/100求和
  3. 个人六年的成长与工作经验分享
  4. 单总体分布卡方拟合优度检验
  5. jquery 蔚蓝网
  6. [转载]Word 插入脚注后分节符自动变成分页符解决办法
  7. 网络广告的效果测定与评估
  8. catia二次开发:函数
  9. 快速查找某个范围内的所有素数
  10. win10自带sftp服务器_win10搭建sftp服务器搭建