matplotlib可视化之饼图plt.pie()与plt.legend()中bbox_to_anchor参数的理解

2023-10-26

  • 函数功能:表示离散变量各占比情况
  • 调用方法:plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False)
  • 参数说明:
    • x:指定绘图的数据
    • explode:指定饼图某些部分的突出显示,即呈现爆炸式
    • labels:为饼图添加标签说明,类似于图例说明
    • colors:指定饼图的填充色
    • autopct:自动添加百分比显示,可以采用格式化的方法显示
    • pctdistance:设置百分比标签与圆心的距离
    • shadow:是否添加饼图的阴影效果
    • labeldistance:设置各扇形标签(图例)与圆心的距离;
    • startangle:设置饼图的初始摆放角度;
    • radius:设置饼图的半径大小;
    • counterclock:是否让饼图按逆时针顺序呈现;
    • wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等;
    • textprops:设置饼图中文本的属性,如字体大小、颜色等;
    • center:指定饼图的中心点位置,默认为原点
    • frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置;

一、绘制简单饼图:

二、环形图:通过参数wedgecolor = {'width':0.5}绘制,自定义数值0.5表示环形图的宽度

 三、使用多个参数绘制复杂饼图:

#构造数据:某城镇受教育程度
education = [9823, 5601, 3759, 1400, 450]
labels = ['小学', '初中', '高中', '大学', '研究生及以上']

explode = [0,0,0,0.2,0.3]  # 用于突出显示特定人群
# 自定义颜色,更多颜色参考颜色网站:https://xkcd.com/color/rgb/
colors=['#9999ff','#ff9999','#7777aa','#2442aa','#dd5555'] 

# 将横、纵坐标轴标准化处理,保证饼图是一个正圆,否则可能为椭圆
plt.axes(aspect='equal')

# 绘制饼图
plt.pie(x = education,         # 绘图数据        
        explode=explode,       # 突出显示特定人群
        labels=labels,         # 添加教育水平标签
        colors=colors,         # 设置饼图的自定义填充色
        autopct='%.1f%%',      # 设置百分比的格式,这里保留一位小数
        pctdistance=0.7,       # 设置百分比标签与圆心的距离
        labeldistance = 1.15,  # 设置教育水平标签与圆心的距离
        startangle = 180,      # 设置饼图的初始角度
        radius = 1.5,          # 设置饼图的半径
        counterclock = False, # 是否逆时针,这里设置为顺时针方向
        # 设置饼图内外边界的属性值:linewidth表示饼图内外边框线宽度;width表示饼图内外宽度,可控制生成环形图;edgecolor表示边框线的颜色        
        wedgeprops = {'linewidth': 1.5,'width':0.5, 'edgecolor':'green'},  
        textprops = {'fontsize':12, 'color':'k'},   # 设置文本标签的属性值
        center = (0,0),        # 设置饼图的原点
        frame = 0)             # 是否显示饼图的图框,这里设置不显示



# 显示图形
plt.show()

四、内嵌环形图:用来分析两组具有同类别的数据对比

通过半径radius跟环形图的宽度设置wedgeprops={'width':num}来绘制

例如:分析两种草莓蛋糕的配料占比情况

# 自定义颜色图列表
colormaplist = ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"]
elements =['面粉','糖','奶油','草莓','坚果']
weight1 = [40,15,20,10,15]
weight2 = [30,25,15,20,10]

plt.pie(weight1,
        autopct="%3.1f%%",           # 百分比显示格式
        radius=1,                    # 半径
        pctdistance=0.85,            # 百分比文本距离圆心距离
        colors=colormaplist,         # 颜色
        textprops=dict(color= "w"),  # 文本设置 
        labels = elements,           # 各类别标签
        wedgeprops=dict(width=0.3, edgecolor = 'w'))  # 饼图内外边格式设置

plt.pie(weight2,
        autopct="%3.1f%%",
        radius=0.7,
        pctdistance=0.75,
        colors=colormaplist, #内环形图也使用相同的颜色图,否则会出现同类别的两个数据颜色不对应,不利于观测分析
        textprops=dict(color= "w"),
        wedgeprops=dict(width=0.3, edgecolor = 'w'))

# 通过legend函数中的loc和bbox_to_anchor参数控制图例位置
# bbox_to_anchor = (x,y,width,height)具体四个参数含义在后面解释
plt.legend( loc = 'center right',bbox_to_anchor = (1.15,0,0.3,1),fontsize = 15)
plt.title('两种草莓蛋糕中配料的比例对比图',fontsize = 17)

plt.show()

五、plt.legend()中的bbox_to_anchor = (x,y,width,height)中四个参数的理解

 1)bbox_to_anchor 参数用来更好的控制以及调整图例框的位置

 2)x,y表示图例框的某个点的坐标位置,而至于那个点是哪里,取决于plt.legend中的参数loc决定,例如:loc = 'center'则x,y表示图例框中心点的位置;

3)width表示将由x,y表示的原图例框的初始位置水平移动多少距离(距离原图例框的宽度);

  height表示将由x,y表示的原图例框的初始位置竖直移动多少距离(距离原图例框的高度);

下面用作图来理解:

fig,ax = plt.subplots(2,1,figsize = (8,5))

ax[0].scatter(0.5,0.5,label = '(0.5,0.5,0,0)')
ax[0].legend(loc = 'upper right',bbox_to_anchor = (0.5,0.5,0,0),prop={'size':20})
ax[0].set_xlim(0,1)
ax[0].set_ylim(0,1)


ax[1].scatter(0.5,0.5,label = '(0.5,0.5,0.5,0.5)')
ax[1].legend(loc = 'upper right',bbox_to_anchor = (0.5,0.5,0.5,0.5),prop={'size':20})
ax[1].set_xlim(0,1)
ax[1].set_ylim(0,1)


plt.subplots_adjust(hspace=0.2)
plt.show()

 由上图第一个子图可知:图例框的右上顶点('upper right')对应点(0.5,0.5);由第二个子图可知:当width,height设置0.5时,表示新的图例框距离原图例框位置水平跟垂直距离0.5的位置,此时新图例框右上顶点的位置为(1,1)。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matplotlib可视化之饼图plt.pie()与plt.legend()中bbox_to_anchor参数的理解 的相关文章

  • Django Rest Framework 嵌套序列化器不显示相关数据

    我使用 Django Rest Framework 进行了基本设置 我有两个模型和一个嵌套序列化器设置 models py from django db import models class Plan models Model name
  • 如何在 Pygame 中制作边框

    我试图让游戏的某个区域周围有边框 并使用一种尺寸来不断更改我的代码 以便它适用于一种尺寸 这是代码 screen xpos ypos height width border width color def draw borders s x
  • 在 Django 中处理 subprocess.call()

    我正在开发的应用程序的简单想法是用户给出 Linux 命令 Linux 命令的结果将显示在网络浏览器中 这是我的观点 py from django shortcuts import render to response from djang
  • pip 中的新彩色终端进度条

    我发现新版本的pip Python的包安装程序 有一个彩色进度条来显示下载进度 我怎样才能做到这一点 Like this pip 本身正在使用rich https pypi org project rich 包裹 特别是 他们的进度条文档
  • Boto3 - 打印 AWS 实例平均 CPU 利用率

    我正在尝试仅打印 AWS 实例的平均 CPU 利用率 此代码将打印出 响应 但最后的 for 循环不会打印平均利用率 有人可以帮忙吗 先感谢您 import boto3 import sys from datetime import dat
  • 如何将 pymongo.cursor.Cursor 转换为字典?

    我正在使用 pymongo 查询一个区域内的所有项目 实际上是查询地图上一个区域内的所有场馆 我用了db command SON 在搜索球形区域之前 它可以返回一本字典 字典中有一个名为results其中包含场馆 现在我需要在一个正方形区域
  • 在 virtualenv 中安装 Python-Dbus

    我正在虚拟环境中运行一个应用程序 需要访问 DBus 主要是与网络管理器交互 我尝试使用 easyinstall 和 pip 安装 Dbus Python 但都失败了 当我尝试这样做时 myvirtualenv borrajax borra
  • Google CoLab 中的 Python 3 支持

    我一直在尝试使用 Jupyter 笔记本https colab research google com https colab research google com 并且默认情况下它们似乎运行 Python 2 7 有什么方法可以在 Co
  • 枚举列表中的列表

    我有一个约会 并记录了那天发生的事件 我想枚举显示日历的日期的事件列表 我还需要能够从列表中删除事件 def command add date event calendar if date not in calendar calendar
  • 如何更新 certifi 的根证书?

    我正在使用 certifi python 模块来验证 ssl 连接 我查看了 certifi python2 7 site packages certifi cacert pem 中包含的根证书 其中一些证书已过期 我如何更新这些证书 我尝
  • 当按下 flutter 中编写的按钮时,有没有办法运行 python 脚本?

    本质上 我想做的是 按下我在 Flutter 中编程的按钮 当按下该按钮时 Python 脚本应该开始在我的 Android 设备上运行 我想在 python 中使用 youtube dl 用于下载 Youtube 视频 库 但我想知道是否
  • 将数据导入 Django 的好方法

    我想定期将数据导入 Django 项目 我需要告诉我的数据提供者我想要以什么格式接收数据 我应该以 Json XML CSV 格式请求吗 在 Django 中通常如何处理这个问题 Django 有一个用于导入数据的完整框架 称为 Fixtu
  • 如何在关心 NaN 值的同时获取数据框中值的百分比变化?

    我有以下数据框 Date A 2015 01 01 10 2015 01 02 14 2015 01 05 NaN 2015 01 06 NaN 2015 01 07 5 2015 01 10 1 2015 01 11 NaN 2015 0
  • 类型错误:“State”和“State”实例之间不支持“<” PYTHON 3

    我正在尝试利用队列类中的 PriorityQueue 但是 我在将自定义对象放入 PQ 时遇到问题 我已经实施了 cmp 函数如下 def cmp self other return self priority gt other prior
  • 如何在 python 解释器 shell 中重复最后一个命令?

    如何重复上一条命令 常用键 向上 Ctrl 向上 Alt p 不起作用 他们创造出无意义的人物 ve kakarukeys localhost ve python Python 2 6 6 r266 84292 Nov 15 2010 21
  • 错误:线条魔术函数

    我正在尝试使用 python 读取文件 但不断收到此错误 ERROR Line magic function user vars not found 我的代码非常基本 names read csv Combined data csv nam
  • Python:计算非整数的阶乘

    我想知道是否有一种快速的 Pythonic 的方法来计算非整数的阶乘 例如 3 4 当然 内置的factorial 函数在Math模块可用 但它仅适用于积分 我不关心这里的负数 你想用math gamma x http docs pytho
  • 如何将目录导入为 python 模块

    如果有目录 home project aaa 我知道它是一个Python包 那么 我如何通过知道它的路径来导入这个模块 这意味着 我希望代码能够正常工作 aaa load module home project aaa 我知道的唯一方法是
  • 使用scrapy到json文件只得到一行输出

    好吧 我对一般编程很陌生 并且具体使用 Scrapy 来实现此目的 我编写了一个爬虫来从 pinterest com 上的 pin 获取数据 问题是我以前从我正在抓取的页面上的所有引脚获取数据 但现在我只获取第一个引脚的数据 我认为问题出在
  • 为什么这个多处理代码会失败? [复制]

    这个问题在这里已经有答案了 def sample pass Process target sample start Process target sample start 上面的代码失败并出现错误 已尝试在当前进程之前启动新进程 进程已完成

随机推荐

  • 详解Vector

    目录 一 Vector介绍 二 源码解析 1 Vector实现的接口 2 Vector的构造方法 1 无参构造方法 2 带初始容量的构造方法 3 带初始容量和增量的构造方法 4 集合型构造方法 3 Vector中的变量 4 Vector主要
  • HttpRunner v4 一条用例是怎么被执行的

    HttpRunner 4 0版本 支持多种用例的编写格式 YAML JSON go test pytest 其中后面两种格式我们都知道通过调用测试函数执行 那YAML JSON这两种用例格式到底是怎样被运行的呢 下面我们一起分析一下 注意
  • zotero翻译、界面、笔记字体大小设置

    zotero翻译 界面 笔记字体大小设置 方式一 编辑器出设置 图中分别对应翻译 界面 笔记字体大小设置 方式二 图形界面设置
  • PC端本地存储方案,Windows和Mac双端通用方案

    功能要求 缓存数据 没有频繁的读写 存储服务端下发的数据 当数据有更新的时候 本地存储会进行更新 同时刷新内存 本地存储作为持久化储存方案 程序每次启动时会读取数据加载到内存 当数据有更新的时候 也会进行内存刷新 从需求解析 存储的特点是持
  • SSM——3.Mybatis的增删改查

    目录 1查询所有数据 2根据id进行查询 3 插入一条数据 4 获取插入数据的id 5 根据id进行删除 6 修改数据 7 小结 前面实践篇我们讲了如何从零创建一个Mybatis项目 然后原理篇我们浅讲了一下Mybatis的实现原理及流程
  • uni-app 调用安卓 高德sdk获取经纬度(替代 uni.getLocation)

    因为项目需要用到精确打卡 所以一两秒就要更新一次经纬度 uni app 按照官方接了离线安卓高德sdk 链接 高德sdk 离线链接 用 uni getLocation 获取到的经纬度是蛮准的 有六位小数 但是拿着手机走一段距离 居然要二三十
  • UE4.27.2 Android开发环境配置

    虚幻官方文档链接 https docs unrealengine com 4 27 zh CN SharingAndReleasing Mobile Android AndroidSDKRequirements 虚幻4 27配置Androi
  • nginx的七层和四层负载均衡

    1 负载均衡目的 将前端超高并发访问转发至后端多台服务器进行处理 解决单个节点压力过大 造成Web服务响应过慢 严重的情况下导致服务瘫痪 无法正常提供服务的问题 2 工作原理 负载均衡分为四层负载均衡和七层负载均衡 四层负载均衡是工作在七层
  • 服务器显示ip访问权限,服务器设置ip访问权限

    服务器设置ip访问权限 内容精选 换一换 若想对象可以被匿名用户 可通过以下三步完成 MindX DL为用户提供组件检查功能 用户可以通过检查脚本获取NPU驱动 Docker Kubernetes组件 Kubelet Kubectl和Kub
  • Ubuntu安装GCC5/7/9/10/11

    为了使用C 14 17 20的新特性 我们难免要升级下自己的GCC版本 同时还要保证自己新安装的GCC生效 并且和原GCC共存 安装GCC 5 0 sudo add apt repository ppa ubuntu toolchain r
  • 编程思维可以有效简化问题

    我们可能会遇到这样一些情况 例如某个孩子和同龄人相比 说话做事更有条理性 每一句都清清楚楚 在逻辑性上明显较强 这是为什么呢 格物斯坦小坦克认为这背后都是因为逻辑思维能力的差异化 逻辑思维差导致孩子处理问题的能力差 无法正确表达自己的想法
  • LaTeX的安装教程(Texlive 2020 + TeX studio)

    LaTeX 音译为 拉泰赫 是一种基于 的排版系统 由美国计算机学家莱斯利 兰伯特 Leslie Lamport 在20世纪80年代初期开发 利用这种格式 即使使用者没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能 能在几天
  • 【python学习笔记】:几个 Python 项目构建工具

    Python 历时这么久以来至今还未有一个事实上标准的项目管理及构建工具 以至于造成 Python 项目的结构与构建方式五花八门 这或许是体现了 Python 的自由意志 不像 Java 在经历了最初的手工构建 到半自动化的 Ant 再到
  • 善于使用二阶思维

    事情往往不是你想象的那样 有时候 看似解决了问题 却在不经意间 引发了更严重的后果 帮助我们思考 决策 解决问题的最有效方法是 运用二阶思维 什么是二阶思维 一阶思维是单纯而肤浅的 几乎人人都能做到 二阶思维则是深邃 复杂而迂回的 能做到的
  • 异步调用,async await基本示例及项目中运用

    示例 async function asyncCall let a await interfaceFn console log 这里是同步 function interfaceFn return new Promise resolve re
  • Jackson中的自定义反序列化器和验证

    tl dr 将输入验证添加到Jackson中的自定义json解串器很重要 在RHQ中 我们在几个地方使用了Json解析 直接在as7 Wildfly插件中 或者通过RESTEasy 2 3 5间接在REST api中使用 已经很繁重了 现在
  • 构建高性能应用:Java与MongoDB的完美融合

    AI绘画关于SD MJ GPT SDXL百科全书 面试题分享点我直达 2023Python面试题 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java python面试题 项目实战 AI文本 OCR识别最佳实践 A
  • windows 资源管理器已停止工作的解决办法

    问题现象描述 电脑开机输入密码后 加载很久 才跳转至解锁后的界面 但解锁后的界面不显示桌面 任务管理器提示 资源管理器已停止工作 尝试联机解决方案或者关闭程序都不奏效 一些快捷键比如win r win e都不起作用 但能ctr alt de
  • vue中 Error in mounted hook: "TypeError: __WEBPACK_IMPORTED_MODULE_0__assets_swiper_js__.default is n...

    个人小站点 https sundjly github io 在vue的项目中出现了以下错误 Error in mounted hook TypeError WEBPACK IMPORTED MODULE 0 assets swiper js
  • matplotlib可视化之饼图plt.pie()与plt.legend()中bbox_to_anchor参数的理解

    函数功能 表示离散变量各占比情况 调用方法 plt pie x explode None labels None colors None autopct None pctdistance 0 6 shadow False labeldist