如何更改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
相关产品推荐
相关产品推荐

