python - 如何在 Python 中使用 matplotlib 库翻译对象
问题描述
我对 Python 相当陌生,目前正在从事一个涉及“matplotlib”库的项目。是否可以创建一个多边形对象,将其修补到图形上定义的点,然后将相同的多边形转换到图形上的另一个区域,而不创建新的多边形?这是我当前用于生成和平铺平行四边形的代码:
for x in range(15):
for y in range(10):
parr = plt.Polygon(((x+1,y),(x,y),(x+1,y+1),(x+2,y+1)), fc = 'b', closed = True)
plt.gca().add_patch(parr)
与其让它沿轴创建新形状,我想知道是否有一种方法可以采用一个形状并将其复制到不同的位置。
解决方案
这就是 a 的Collection
用途。您可以创建Polygon
一次并将其提供给PatchCollection
. 然后将放置此多边形的所有点定义为offsets
。
import matplotlib.pyplot as plt
import matplotlib.collections as mcol
import matplotlib.transforms as mtrans
import numpy as np
poly = plt.Polygon(((1,0),(0,0),(1,1),(2,1)), fc = 'b', closed = True)
x,y = np.meshgrid(np.arange(15), np.arange(10))
# create PatchCollection with all coordinates within x=(0..14), y=(0..9) as offsets
pcol = mcol.PatchCollection([poly,], offsets=np.c_[x.flatten(), y.flatten()],
offset_position="data", transOffset=mtrans.IdentityTransform(),
transform=plt.gca().transData)
# colorize the patches
pcol.set_array(np.random.rand(15*10))
plt.gca().add_collection(pcol)
plt.gca().set(xlim=(0,16),ylim=(0,10))
plt.show()
推荐阅读
- c# - 材料设计按钮内的图标未单击
- google-cloud-data-fusion - 文件触发的 CDF 作业
- php - SQLSTATE [HY000]:一般错误:1005无法创建表`business`.`users`(errno:150“外键约束形成错误”)Laravel 7
- scala - 具有超过 22 个字段的 Playframework 和 Scala Slick 元组
- c++ - 在 C++ 中搜索向量
- fonts - SwiftUI 中的自定义字体
- c++ - 在此代码中面临 RUNTIME 错误 SIGKILL
- c - 字符串打印不包括前 N 个字符
- c# - sftp: 没有找到合适的验证方法来完成验证
- vue.js - VueJS Rollup 导出多个 scss 资源