100天精通Python(可视化篇)——第93天:Pyecharts绘制多种炫酷饼图参数说明+代码实战(百分比、环形、玫瑰、内嵌、多个子图饼图)

news/2024/12/22 20:58:57/

文章目录

  • 专栏导读
  • 1. 基础饼图
    • add函数
    • 简单案例
    • 改变颜色
  • 2. 百分比饼图
  • 3. 环形饼图
  • 4. 玫瑰饼图
  • 5. 内嵌环图
  • 6. 多个饼图

专栏导读

🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
    在这里插入图片描述
    在这里插入图片描述

1. 基础饼图

add函数

Pie.add()方法是Pyecharts模块中用于向饼图中添加数据的方法。该方法的所有参数如下:

add(series_name: str = "",data_pair: Union[List[Tuple], List[dict]] = None,*,radius: Optional[Sequence] = None,center: Optional[Sequence] = None,rosetype: Optional[str] = None,label_opts: Union[opts.LabelOpts, dict, None] = None,tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,encode: Optional[dict] = None,sort_: Optional[str] = None,selected_mode: Optional[str] = None,selected_offset: Optional[int] = None,clockwise: Optional[bool] = None,start_angle: Optional[int] = None,min_angle: Optional[int] = None,rose_area_color: Optional[str] = None,label_line_opts: Union[opts.LabelLineOpts, dict, None] = None,zlevel: Optional[int] = None,z: Optional[int] = None,
) -> "Pie"

参数说明:

  • series_name:(str)系列名称,用于区分不同的系列数据。默认为""。
  • data_pair:(Union[List[Tuple], List[dict]])数据对,数据对是一个元组或字典,包含两个元素:名称和值。例如:[(“A”, 10), (“B”, 20), (“C”, 30)]或[{“name”: “A”, “value”: 10}, {“name”: “B”, “value”: 20}, {“name”: “C”, “value”: 30}]。
  • radius:(Optional[Sequence])饼图的半径,可以设置为一个列表,包含内半径和外半径。例如:[“40%”, “75%”]。
  • center:(Optional[Sequence])饼图的中心位置,可以设置为一个列表,包含横坐标和纵坐标。例如:[“50%”, “50%”]。
  • rosetype:(Optional[str])玫瑰图类型,可选值为"radius"和"area"。默认为None。
  • label_opts:(Union[opts.LabelOpts, dict, None])标签配置项,用于设置标签的样式、格式等。默认为None。
  • tooltip_opts:(Union[opts.TooltipOpts, dict, None])提示框配置项,用于设置提示框的样式、格式等。默认为None。
  • itemstyle_opts:(Union[opts.ItemStyleOpts, dict, None])图形样式配置项,用于设置饼图的颜色、阴影等。默认为None。
  • encode:(Optional[dict])数据编码,用于指定数据项和维度的对应关系。例如:{“itemName”: 0, “value”: 1}。
  • sort_:(Optional[str])数据排序方式,可选值为"ascending"和"descending"。默认为None。
  • selected_mode:(Optional[str])选中模式,可选值为"single"和"multiple"。默认为None。
  • selected_offset:(Optional[int])选中偏移量,用于设置选中的图形偏移的像素值。默认为None。
  • clockwise:(Optional[bool])饼图是否顺时针排列。默认为None。
  • start_angle:(Optional[int])饼图的起始角度。默认为None。
  • min_angle:(Optional[int])饼图的最小角度。默认为None。
  • rose_area_color:(Optional[str])玫瑰图区域颜色。默认为None。
  • label_line_opts:(Union[opts.LabelLineOpts, dict, None])标签线配置项,用于设置标签线的样式、格式等。默认为None。
  • zlevel:(Optional[int])图形所在图层。默认为None。
  • z:(Optional[int])图形的 z 坐标。默认为None。

以上代码为Pie.add()方法的所有参数示例。在实际使用中,可以根据需要选择设置相应的参数。

简单案例

下面是使用Pyecharts链式写法绘制基础饼图的代码和说明介绍:

from pyecharts import options as opts
from pyecharts.charts import Pie# 构造数据
data = [("A", 55), ("B", 20), ("C", 18), ("D", 5), ("E", 2)]# 使用链式写法创建Pie实例,添加数据并设置全局属性、系列属性
pie = (Pie().add("", data).set_global_opts(title_opts=opts.TitleOpts(title="基础饼图")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")))# 在jupyter notebook输出
pie.render_notebook()# 在浏览器中显示图表
pie.render("basic_pie.html")

代码说明:

  1. 导入Pyecharts的options和Pie模块。
  2. 构造数据,这里用了一个列表,每个元素是一个元组,第一个元素是标签,第二个元素是数值。
  3. 使用链式写法创建Pie实例,并调用add()方法添加数据,第一个参数是饼图的名称,第二个参数是数据列表。
  4. 继续使用链式写法调用set_global_opts()方法,设置全局属性,这里设置了标题。
  5. 继续使用链式写法调用set_series_opts()方法,设置系列属性,这里设置了标签格式。
  6. 调用render_notebook方法,在jupyter notebook输出

运行结果:
在这里插入图片描述

改变颜色

在Pyecharts中,set_colors()函数可以用于设置图表中的颜色,可以传入一个颜色列表,每个元素是一个字符串,表示一个颜色值。下面是一些常用的颜色值及其对应的字符串:

  • 红色:"#c23531"
  • 绿色:"#61a0a8"
  • 蓝色:"#2f4554"
  • 橙色:"#d48265"
  • 紫色:"#91c7ae"
  • 黄色:"#749f83"
  • 粉色:"#ca8622"
  • 深红色:"#bda29a"
  • 浅蓝色:"#6e7074"
  • 深蓝色:"#546570"
  • 浅绿色:"#c4ccd3"
  • 深绿色:"#4b565b"

当然,还有很多其他的颜色值可以使用,可以根据需要自行搜索。在Pyecharts中,可以使用set_colors()函数将这些颜色值传入图表中,或者使用JS代码自定义颜色。

调用set_colors()方法,设置颜色,这里使用了五种颜色:

from pyecharts import options as opts
from pyecharts.charts import Pie# 构造数据
data = [("A", 55), ("B", 20), ("C", 18), ("D", 5), ("E", 2)]# 使用链式写法创建Pie实例,添加数据并设置全局属性、系列属性
pie = (Pie().add("", data).set_colors(["#c23531", "#2f4554", "#61a0a8", "#d48265", "#91c7ae"]) # 修改颜色.set_global_opts(title_opts=opts.TitleOpts(title="基础饼图")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")))# 在jupyter notebook输出
pie.render_notebook()

运行结果:
在这里插入图片描述

2. 百分比饼图

下面是使用Pyecharts链式写法绘制百分比饼图并在jupyter notebook中输出的代码和说明介绍

from pyecharts import options as opts
from pyecharts.charts import Pie# 构造数据
data = [("A", 55), ("B", 20), ("C", 18), ("D", 5), ("E", 2)]# 绘制饼图
pie = (Pie().add("", data).set_global_opts(title_opts=opts.TitleOpts(title="百分比饼图")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")))# 在jupyter notebook输出
pie.render_notebook()

代码说明:

导入Pyecharts的options和Pie模块。构造数据,这里用了一个列表,每个元素是一个元组,第一个元素是标签,第二个元素是数值。创建Pie实例,使用链式写法设置图表的各种属性。.add("", data)表示将数据添加到饼图中,set_global_opts()设置全局属性,这里设置了标题,set_series_opts()设置系列属性,这里设置了标签格式。调用render_notebook()方法,在jupyter notebook中输出饼图。

运行结果:
在这里插入图片描述

3. 环形饼图

通过在add函数中设置radius设置饼图内圈和外圈的大小比例,绘制环形饼图:

from pyecharts import options as opts
from pyecharts.charts import Pie# 构造数据
data = [("A", 55), ("B", 20), ("C", 18), ("D", 5), ("E", 2)]# 绘制饼图
pie = (Pie().add("", data, radius=["15%", "50%"]) # 设置饼图内圈和外圈的大小比例.set_global_opts(title_opts=opts.TitleOpts(title="环形饼图")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")))# 在jupyter notebook输出
pie.render_notebook()

运行结果:
在这里插入图片描述

4. 玫瑰饼图

下面是使用Pyecharts链式写法绘制玫瑰饼图并在jupyter notebook中输出的示例代码:

from pyecharts.charts import Pie
from pyecharts.options import InitOpts, TitleOpts, LegendOpts, ToolboxOpts, LabelOpts# 初始化Pie对象
pie = Pie(init_opts=InitOpts(width='800px', height='400px'))# 添加数据
data = [('类别1', 15), ('类别2', 20), ('类别3', 10), ('类别4', 5), ('类别5', 5), ('类别6', 5)]
pie.add(series_name='', data_pair=data, radius=['30%', '70%'], rosetype='radius')# 设置全局配置项
pie.set_global_opts(title_opts=TitleOpts(title='玫瑰饼图示例'),legend_opts=LegendOpts(is_show=True),toolbox_opts=ToolboxOpts(is_show=True),)# 设置系列配置项
pie.set_series_opts(label_opts=LabelOpts(formatter="{b}: {c} ({d}%)"))# 输出到jupyter notebook
pie.render_notebook()

代码说明:

  1. 首先,我们导入需要使用的类和模块:Pie、InitOpts、TitleOpts、LegendOpts、ToolboxOpts和LabelOpts。

  2. 然后,我们初始化一个Pie对象,并设置图表的宽度和高度。

  3. 接着,我们添加数据。这里我们使用一个元组列表来表示数据,元组的第一个元素是类别名称,第二个元素是类别所占比例。

  4. 我们设置全局配置项,包括标题、图例和工具栏等。

  5. 我们设置系列配置项,包括标签格式化和玫瑰图的类型等。

  6. 最后,我们使用render_notebook()方法将图表输出到jupyter notebook中。

运行代码后,你应该可以在jupyter notebook中看到绘制的玫瑰饼图:
在这里插入图片描述

5. 内嵌环图

内嵌环图是一种可以在一个圆环内部再嵌套一个圆环的饼图,通常用于展示两层数据之间的关系:

import pyecharts.options as opts
from pyecharts.charts import Pie# 定义内环数据
inner_x_data = ["直达", "营销广告", "搜索引擎"]
inner_y_data = [335, 679, 1548]
inner_data_pair = [list(z) for z in zip(inner_x_data, inner_y_data)]# 定义外环数据
outer_x_data = ["直达", "营销广告", "搜索引擎", "邮件营销", "联盟广告", "视频广告", "百度", "谷歌", "必应", "其他"]
outer_y_data = [335, 310, 234, 135, 1048, 251, 147, 102]
outer_data_pair = [list(z) for z in zip(outer_x_data, outer_y_data)]# 创建Pie对象
pie = (Pie(init_opts=opts.InitOpts(width="800px", height="800px")) # 设置图表大小.add(series_name="访问来源", # 设置系列名称data_pair=inner_data_pair, # 设置内环数据radius=[0, "30%"], # 设置内外环半径label_opts=opts.LabelOpts(position="inner"), # 设置标签位置).add(series_name="访问来源", # 设置系列名称radius=["40%", "55%"], # 设置内外环半径data_pair=outer_data_pair, # 设置外环数据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(legend_opts=opts.LegendOpts(pos_left="left", orient="vertical")) # 设置全局配置.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)") # 设置提示框格式)
)# 输出到jupyter notebook
pie.render_notebook()

运行结果:
在这里插入图片描述

6. 多个饼图

本代码使用了 Pyecharts 库中的 Pie 类,绘制了一个多饼图的基本示例,展示了不同类型电影的占比情况。

import pyecharts.options as opts
from pyecharts.charts import Pie
from pyecharts.globals import ThemeTypec = (Pie().add("",[list(z) for z in zip(["剧情", "其他"], [30, 70])],center=["20%", "30%"],radius=[60, 80],label_opts=opts.LabelOpts(formatter="{b}: {d}%")  # 给每个饼图加上百分比).add("",[list(z) for z in zip(["奇幻", "其他"], [40, 60])],center=["55%", "30%"],radius=[60, 80],label_opts=opts.LabelOpts(formatter="{b}: {d}%")).add("",[list(z) for z in zip(["爱情", "其他"], [24, 76])],center=["20%", "70%"],radius=[60, 80],label_opts=opts.LabelOpts(formatter="{b}: {d}%")).add("",[list(z) for z in zip(["惊悚", "其他"], [11, 89])],center=["55%", "70%"],radius=[60, 80],label_opts=opts.LabelOpts(formatter="{b}: {d}%")).set_global_opts(title_opts=opts.TitleOpts(title="Pie-多饼图基本示例"),legend_opts=opts.LegendOpts(type_="scroll", pos_top="20%", pos_left="80%", orient="vertical"),)
)c.render_notebook()

具体实现过程如下:

导入所需库:pyecharts.options、pyecharts.charts 和 pyecharts.globals。创建一个 Pie 类实例。使用 add() 方法添加四个饼图,分别表示剧情、奇幻、爱情和惊悚类型电影的占比情况。在每个饼图中使用 label_opts 参数的 formatter 属性,给每个饼图加上百分比的标签。使用 set_global_opts() 方法设置全局参数,包括标题和图例的位置和样式。最后使用 render_notebook() 方法将图表渲染到 Jupyter Notebook 中。

需要注意的是,饼图的位置和大小可以通过 center 和 radius 参数来设置,每个饼图的数据以列表形式传入,每个元素包含两个值,分别表示该数据的名称和数值。在本示例中,其他类型电影的占比是通过剩余部分的方式计算得出的。

运行结果:
在这里插入图片描述


http://www.ppmy.cn/news/579696.html

相关文章

谁能悄悄告诉我:EDG到底是啥?

早上醒来&#xff0c;一看手机&#xff0c;满屏的EDG&#xff0c;我懵了&#xff01; EDG? 这到底是啥&#xff1f; 难道比我昨晚看的曼城对曼联还重要 ? 我赶紧打开浏览器&#xff0c;颤抖着双手在搜索框敲入了&#xff1a;EDG 百度给我的搜索提示一下子就平复了我的心情&am…

产品的0到1概念篇

一、产品是什么&#xff1f; 产品是指被人们使用和消费&#xff0c;并能满足人们某种需求的任何东西&#xff0c;包括有形的物品、无形的服务、组织、观念或它们的组合。 产品本质是什么&#xff0c;产品的本质就是解决⽤户的痛点/满⾜⽤户的需求&#xff0c;这种满⾜的需求&…

CG系统编程练习题

目录 日历问题 成绩大排队 最少钱币数 写出来吧

pc分布使用率情况_如何在不违反法律的情况下获得廉价和免费的PC游戏

pc分布使用率情况 Being a PC gamer can be an expensive business. You spend hundreds on your hardware and then you have to buy the games to play. So, how do you reduce the cost? 乙 eing一个PC游戏玩家可以是一个昂贵的业务。 您在硬件​​上花费了数百美元&#x…

java9推迟_甲骨文宣布Java 9将会推迟到明年7月发布

新游动态 / 桑野 / 2020-12-08 赛博朋克2077当前地区不可用怎么回事 新游动态 / 桑野 / 2020-12-08 CSGO老K头上套的是什么&#xff1f; 新游动态 / 快乐 / 2020-12-08 赛博朋克2077硬盘空间及内存需求讲解 新游动态 / 萧然 / 2020-12-08 梦幻联动&#xff01;《赛博朋克2077》…

rust炼油机怎么搞_rust挖油机在哪个位置 | 手游网游页游攻略大全

发布时间:2016-08-18 怪物猎人ol中有不少东西需要素材燕雀石才能制作.可是燕雀石手上一个都没有.去哪里挖呢?来看看99单机小编的怪物猎人ol燕雀石哪里挖 燕雀石出处位置详解哈. 燕雀石是狩猎场20-40级的矿石.所以需要去相应等级的地方才能获 ... 标签: 游戏资讯 攻略秘籍 发…

从A至Z,用30个单词来概括过去十年的游戏行业

原文 The A-Z of new gaming terms | GamesIndustry.bizhttps://www.gamesindustry.biz/articles/2022-02-21-the-a-z-of-new-gaming-terms Accessibility&#xff08;无障碍&#xff09; 在过去十年中&#xff0c;游戏领域中最值得欢迎的变化是游戏开发者迟来地认识到&#…

EDG 到底是个啥?元宇宙呢?

见字如面&#xff0c;我是军哥&#xff01; 前几天&#xff0c;一看手机&#xff0c;满屏的EDG&#xff0c;我懵了&#xff01; EDG? 这到底是啥&#xff1f; 难道比我昨晚看的曼城对曼联还重要 ? 我赶紧打开浏览器&#xff0c;颤抖着双手在搜索框敲入了&#xff1a;EDG 百度…