首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何旋转matplotlib.patches.Polygon?

如何旋转matplotlib.patches.Polygon?
EN

Stack Overflow用户
提问于 2021-01-14 16:14:50
回答 1查看 94关注 0票数 1

如何旋转matplotlib.patches.Polygon?以下代码的输出没有显示任何内容。

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib as mpl
fig, ax = plt.subplots(figsize=(10,3))
x = [0.3,0.6,.5,.4]
y = [0.7,0.7,0.9,0.9]

trapezoid = patches.Polygon(xy=list(zip(x,y)), fill=False)

t_start = ax.transData
t = mpl.transforms.Affine2D().rotate_deg(-45)
t_end = t_start + t

trapezoid.set_transform(t_end)

print(repr(t_start))
print(repr(t_end))
ax.add_patch(trapezoid)

plt.show()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-14 20:12:30

合成变换时,必须使用t_end = t + t_start而不是t_start + t+操作符是重载的:a + b表示首先应用a,然后应用b。对于仿射变换,这意味着矩阵乘积B@A,其中AB分别是ab的变换矩阵。矩阵乘积是not commutative

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib as mpl
import copy

fig, ax = plt.subplots(figsize=(10,3))
x = [0.3,0.6,.5,.4]
y = [0.7,0.7,0.9,0.9]

trapezoid = patches.Polygon(xy=list(zip(x,y)), fill=False)
ax.add_patch(copy.copy(trapezoid))

t_start = ax.transData
t = mpl.transforms.Affine2D().rotate_deg(-45)
t_end = t + t_start

trapezoid.set_transform(t_end)
ax.add_patch(trapezoid)

plt.show()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65715474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档