关于 plt.legend() 中 bbox_to_anchor 的理解

news/2025/10/31 14:20:21/文章来源:https://www.cnblogs.com/emanlee/p/19178152

 

在 matplotlib 中,bbox_to_anchor 是用于调整图例(legend)、文本(text)等元素位置的重要参数,它的作用是指定元素的 “锚点框”(bounding box)相对于参考坐标系的位置。

参数形式

bbox_to_anchor 通常接收一个长度为 2 或 4 的元组((x, y) 或 (x, y, width, height)),具体含义取决于使用场景和配合的 loc 参数: 
  1. 长度为 2 的元组 (x, y)
     
    表示锚点框的左下角坐标(默认参考坐标系),用于指定元素的锚点位置。
  2. 长度为 4 的元组 (x, y, width, height)
     
    不仅指定锚点框的左下角坐标 (x, y),还指定其宽 width 和高 height(通常用于更精细的布局控制,较少见)。

核心逻辑:与 loc 参数配合

bbox_to_anchor 需要与 loc 参数(指定元素的 “锚点”)配合使用,才能准确定位元素,规则如下: 
  • loc 定义元素自身的哪个点作为 “锚点”(例如 loc='upper right' 表示元素的右上角为锚点)。
  • bbox_to_anchor 定义这个锚点要 “吸附” 到哪个位置(即锚点框的对应位置)。

坐标系规则

bbox_to_anchor 的坐标默认基于 Axes 坐标系(即子图内的相对坐标): 
  • x=0 对应子图左侧,x=1 对应子图右侧;
  • y=0 对应子图底部,y=1 对应子图顶部。
 
如果配合 bbox_transform=plt.gcf().transFigure,则坐标会切换为 Figure 坐标系(即整个图像的相对坐标),便于在图边缘或跨子图定位。

示例

以图例(legend)为例: 
 
import matplotlib.pyplot as pltplt.plot([1,2,3], label='line1')
# loc='center' 表示图例的中心点为锚点
# bbox_to_anchor=(1.1, 0.5) 表示锚点吸附到 Axes 坐标系的 (1.1, 0.5) 处(子图右侧外部中间)
plt.legend(loc='center', bbox_to_anchor=(1.1, 0.5))
plt.show()
 
 
此时图例的中心点会与 (1.1, 0.5) 对齐,实现图例在子图右侧外部居中的效果。
 
总结:bbox_to_anchor 通过定义锚点框的位置,结合 loc 确定元素自身锚点的吸附位置,从而灵活控制元素在图中的布局。

 

width, height 两个参数实际和说明不一致。

 

================================================

 

https://blog.csdn.net/sinat_41299610/article/details/106494549

在用plt.legend()添加图例的时候,bbox_to_anchor()这个参数有时候是有两个元素,有时候是可以有四个元素,那么到底有什么区别?


1. 两个元素

对于两个元素的bbox_to_anchor(),也就是(x,y),这个参数是代表了lengend_box的起点,并且是有后面的loc决定 的。

首先明确,lengend_box是一个四边形,在这里为了方便理解将它的四条边成为:

左边,右边,顶边,底边
 

例如,

设置(0.5,0.5), loc='center',那么代表lengend_box的中心点(center)坐标是(0.5, 0.5)
设置(0.5,0.5), loc='lower center',那么代表底边的中点坐标是(0.5,0.5)

如图中标注的红点就是坐标(0.5,0.5)所在位置,然后根据loc参数的不同,对应到绿色的lengend_box位置也就不同。

1ed48070b2f68f6db0cd811eeb0ef332

 


2. 四个元素

对于四个元素的bbox_to_anchor(),也就是(x, y, width, height),情况就和上面两个元素的有所不同了。我们通过图来展示,会更清楚一点。

88a203abfa44df80cbf55f0a12d58ee3

 


如图,红色框为bounding_box,绿色框为legend_box,在加上了(height, width)两个参数后,实际的中心(x=0.5, y=0.5)来到了红色框中,也就是图中黑色点标记处,然后再根据(height, width)分别扩展。

那个(height, width)对于绿色框又产生了什么影响呢?我们从图中的紫色点标记处来看,绿色框的起点应该是和loc参数对应。

当loc='center'时,绿色框的起点应该是在红色框的正中心,然后根据(height,width)向四周边扩散(因为时center);
当loc='lower center'时,绿色框的起点在红色框的底边中心,然后根据(height,width)向两边以及上面扩散(因为是lower+center);

同理可以类推出其他的图。
 
原文链接:https://blog.csdn.net/sinat_41299610/article/details/106494549

 

=======================================

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as patchesx = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)fig, ax = plt.subplots()ax.plot(x, y1, 'b-', label='sin(x)')
ax.plot(x, y2, 'r--', label='cos(x)')# 设置图例的位置。loc定义基准位置,bbox_to_anchor进行微调。
ax.legend(loc='upper left', bbox_to_anchor=(1, 1))plt.show()

 

image

 

=======================================

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as patchesx = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)fig, ax = plt.subplots()ax.plot(x, y1, 'b-', label='sin(x)')
ax.plot(x, y2, 'r--', label='cos(x)')# 设置图例的位置。loc定义基准位置,bbox_to_anchor进行微调。
ax.legend(loc='upper left', bbox_to_anchor=(0, 0))plt.show()

image

 

=======================================

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as patchesx = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)fig, ax = plt.subplots()ax.plot(x, y1, 'b-', label='sin(x)')
ax.plot(x, y2, 'r--', label='cos(x)')# 设置图例的位置。loc定义基准位置,bbox_to_anchor进行微调。
ax.legend(loc='upper left', bbox_to_anchor=(0, 1))plt.show()

image

 

=======================================

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as patchesx = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)fig, ax = plt.subplots()ax.plot(x, y1, 'b-', label='sin(x)')
ax.plot(x, y2, 'r--', label='cos(x)')# 设置图例的位置。loc定义基准位置,bbox_to_anchor进行微调。
ax.legend(loc='upper left', bbox_to_anchor=(1, 0))plt.show()

image

 

=======================================

 

=======================================

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网上售楼处小程序系统:全场景数字化营销解决方案

一、概述总结 网上售楼处小程序系统是一款适配微信平台的数字化营销工具,提供源码下载与定制开发服务,聚焦房产行业线上获客与交易转化需求。系统依托微擎开放平台的技术支撑,整合营销推广、客户管理、交易辅助等核…

给旧版 .NET 也开一扇“私有之门”——ILAccess.Fody 实现原理与设计

给旧版 .NET 也开一扇"私有之门" —— ILAccess.Fody 实现原理与设计 作者:huoshan12345 项目地址:ILAccess.Fody前言:从 UnsafeAccessor 说起 在 .NET 8 中, 微软引入了一个让底层开发者非常心动的新特性…

当Dify遇见Selenium:可视化编排UI自动化测试,原来如此简单

关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集 在UI自动化测试领域,Selenium一直是无可争议的王者,但其陡峭的学习曲线和复杂的代码维护成本让许多测试团队望而却步。而今,通过Dify的可…

Playwright与Selenium的对比

明白了!既然你有 Python 和 Selenium 的基础,那学习 Playwright 会非常快。我们来用你熟悉的视角来讲解。Playwright vs Selenium:程序员视角 把它们都看作是 "浏览器遥控器",但 Playwright 是新一代的、…

MLGO微算法科技发布多用户协同推理批处理优化系统,重构AI推理服务效率与能耗新标准

在人工智能(AI)与移动计算深度融合的背景下,边缘计算逐步成为新一代智能服务基础架构的核心。在这一浪潮中,微算法科技(NASDAQ:MLGO)推出一种具有批处理功能的边缘服务器实现多用户协同推理技术,这项技术不仅提…

2025 年 HDPE 土工膜,聚乙烯土工膜,糙面土工膜厂家最新推荐,产能、专利、环保三维数据透视!

引言 在基建与环保工程需求激增的背景下,HDPE、聚乙烯、糙面土工膜的市场规模持续扩大,但产品质量差异显著,行业抽检显示仅有 68% 的产品核心指标达标。为破解采购困境,本次推荐依托土工合成材料工程协会 2025 年度…

2025年汽油发电机生产厂家权威推荐榜单:静音发电机/施工发电机/高原发电机源头厂家精选

根据QYR(QYResearch)的统计及预测,2024年全球汽油发电机市场销售额已达到9.71亿美元,预计到2031年将增长至13.42亿美元,期间年复合增长率(CAGR)为4.8%。全球市场目前呈现高度集中态势,前三大厂商合计占据超过3…

泛微ecology-9流程功能的后续-流程明细导出

泛微ecology9的OA流程明细导出流程明细导出功能 以前的认知 故事背景 泛微e9的流程明细导出功能缺失 默认一直有一个明细导入功能,之前在泛微做运维的时候经常有客户咨询:“为什么没有明细导出功能” 泛微总部技术同…

Core loss in maxwell

Core loss in maxwell2025-10-31 14:10 斑鸠,一生。 阅读(0) 评论(0) 收藏 举报 一、计算方式二、Example 三、涡流场与瞬态场中磁滞损耗的对比

西部数据MyCloud NAS漏洞分析与技术揭秘

本文详细分析了西部数据MyCloud NAS设备中的多个安全漏洞,包括登录绕过漏洞、命令注入漏洞和任意文件上传漏洞,涉及PHP代码审计、shell命令注入等技术细节,揭示了该系列设备存在的严重安全问题。西部数据MyCloud NA…

Claude Skill官方仓库Skill解析

📋 概述 Claude Code Skill官方仓库地址 本文档提供了Claude Skills仓库的完整目录结构和详细说明。该仓库包含18个技能,分为两大类:专有文档处理技能和开源示例技能。📁 根目录结构 skills-main/ ├── .claud…

2025年深圳市场调研机构权威推荐榜单:市场执行/市场调查/神秘顾客源头机构精选

在深圳产业升级与数字化转型的浪潮下,2025年深圳及周边地区的市场调研需求同比增长超20%,企业对数据驱动的决策依赖度提高了35%。精准、客观的市场洞察已成为企业制定战略的关键依据。 为帮助各类企业精准筛选合格供…

2025年乌鲁木齐黄金回收权威推荐榜单:黄金上门回收/黄金首饰回收/黄金首饰加工服务商精选

随着黄金价格的持续波动与消费者对资产流动性的需求增长,乌鲁木齐黄金回收市场正逐步向规范化、专业化、透明化方向发展。黄金回收服务涵盖金条、金饰、K金、钻石、名表、名酒等多类贵重物品,涉及重量鉴定、成色检测…

The lifelong path of human

So what’s my lifelong path? I’m a software engineer, a professor, a Chinese, English, or other else? Can I have all of the occupations? Should I have all of the occupations? Are people REALLY fre…

高压氧舱服务商推荐:探索2025年最佳服务选择,提升健康生活品质

摘要 高压氧舱行业在2025年迎来快速发展,广泛应用于健康改善、疾病辅助治疗和抗衰老领域。本文基于市场调研和用户反馈,推荐前十家高压氧舱服务商,并提供详细比较,帮助用户做出明智选择。表单内容仅供参考,实际选…

2025年郑州除甲醛公司权威推荐榜单:氧道净醛水漆/新房装修除甲醛/甲醛净化服务商精选

随着公众健康意识的提升和装修污染的普遍存在,郑州除甲醛市场正迎来专业化、技术化的发展阶段。室内空气质量不仅关系到居住舒适度,更直接影响人体健康。本文将基于企业资质、技术实力、产品性能、服务案例及客户反馈…

2025年10月人形机器人落地商排名榜:赛飞特工程技术集团赋能榜

人形机器人赛道在2025年迎来“场景落地”大考。工信部《人形机器人创新发展指导意见》与10月刚发布的《中国人形机器人产业白皮书》共同指出:2025—2027年是规模化落地的窗口期,但“技术先进却落地困难”仍是最大堵点…

2025 年健身器材品牌最新推荐榜,技术实力与市场口碑深度解析单位 / 家庭 / 有氧 / 力量健身器材推荐

引言 2025 年健身器材行业迎来新国标全面实施元年,《室外健身器材的安全 通用要求》(GB19272)等标准推动行业向安全化、智能化升级。为破解市场同质化与质量参差问题,本次推荐榜依托体育用品业联合会测评体系,结合…

设计师必看!PS 2026 解锁 AI 修图新玩法:第三方模型 + 实时协作 + 显卡专属加速,效率直接拉满

Adobe Photoshop 2026 v27.0正式发布,以创新功能与极致性能,重新定义专业修图体验。视觉层面采用简洁灵动的设计风格,开启编辑工作即能感受到新鲜活力;功能层面,两大新工具 ——移除工具与AI 查找干扰功能重磅上线…

四大主流平台深度测评:2025 企业自动化运维平台选型指南,自动化巡检平台适配核心场景

2025年企业IT运维面临资源异构及场景聚合分散的矛盾,自动化运维平台成为核心基建。选型需兼顾场景化与平台化,文章对比主流自动化运维系统,从核心定位、关键能力、适配场景全方位剖析,为企业选型提供依据,强调需贴…