You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更改matplotlib.collections.PolyCollection的位置?

调整Matplotlib PolyCollection的位置

嘿,我来帮你搞定这个PolyCollection位置调整的问题!你猜的没错,set_offsets()确实是用来调整位置的关键方法,下面给你具体的用法示例和原理说明:

方法1:使用set_offsets()实现整体偏移

fill_between()返回的PolyCollection本质上是包含单个多边形的集合,所以我们可以通过给这个多边形添加整体偏移量来移动它的位置。具体代码如下:

%matplotlib notebook
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = plt.gca()
# 初始创建红色填充区域
area = ax.fill_between((0,4), 1, 2, facecolor='red', alpha=0.25)

# 定义偏移量:向右移2个单位,向上移1个单位
dx, dy = 2, 1
# 给PolyCollection设置偏移(因为是单个多边形,所以传入(1,2)的数组)
area.set_offsets(np.array([[dx, dy]]))

plt.show()

运行这段代码后,你会看到原来的红色填充块整体向右上方移动了。set_offsets()会给集合中的每个多边形的所有顶点都加上你指定的偏移量,对于单个多边形来说,就实现了整体位置的移动。

方法2:直接修改顶点坐标(更灵活)

如果你需要更精细地调整位置(比如只移动部分顶点),可以直接获取并修改多边形的顶点坐标:

%matplotlib notebook
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = plt.gca()
area = ax.fill_between((0,4), 1, 2, facecolor='red', alpha=0.25)

dx, dy = 2, 1
# 获取第一个(也是唯一一个)多边形的顶点
vertices = area.get_paths()[0].vertices
# 给所有顶点加上偏移量
vertices += np.array([dx, dy])
# 重新设置顶点坐标
area.get_paths()[0].vertices = vertices

plt.show()

这种方式适合需要自定义调整顶点位置的场景,自由度更高。

内容的提问来源于stack exchange,提问作者Matthew May

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:27:18