Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在matplotlib中缩放多边形面片?_Python_Matplotlib - Fatal编程技术网

Python 如何在matplotlib中缩放多边形面片?

Python 如何在matplotlib中缩放多边形面片?,python,matplotlib,Python,Matplotlib,在下面的示例中,我使用matplotlib.patches.Polygon创建了一个矩形面片。在将面片添加到绘图之前,是否有方法缩放面片 我尝试过以各种方式使用matplotlib.transforms.Affine2D,但没有成功。与往常一样,关于转换的matplotlib文档严重不足 import matplotlib.pyplot as plt from matplotlib.patches import Polygon fig = plt.figure() ax = fig.add_s

在下面的示例中,我使用matplotlib.patches.Polygon创建了一个矩形面片。在将面片添加到绘图之前,是否有方法缩放面片

我尝试过以各种方式使用matplotlib.transforms.Affine2D,但没有成功。与往常一样,关于转换的matplotlib文档严重不足

import matplotlib.pyplot as plt
from matplotlib.patches import Polygon

fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot([-3,3],[-3,3])

x = [-1,0,1,1,0,-1]
y = [1,1,1,-1,-1,-1]
poly = Polygon( zip(x,y), facecolor='red', edgecolor='red', alpha=0.5)
ax.add_patch(poly)

plt.show()

如果你所说的比例是指乘以一个因子,你可以通过numpy轻松地做到这一点

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon

fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot([-3,3],[-3,3])

x = [-1,0,1,1,0,-1]
y = [1,1,1,-1,-1,-1]
scale = 2
poly = Polygon( np.c_[x,y]*scale, facecolor='red', edgecolor='red', alpha=0.5)
ax.add_patch(poly)

plt.show()
使用
matplotlib.transforms.Affine2D()

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
import matplotlib.transforms as transforms

fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot([-3,3],[-3,3])

x = [-1,0,1,1,0,-1]
y = [1,1,1,-1,-1,-1]

trans = transforms.Affine2D().scale(2) + ax.transData

poly = Polygon( np.c_[x,y], facecolor='red', edgecolor='red', alpha=0.5, 
               transform=trans)
ax.add_patch(poly)

plt.show()

尽管对于这样一个简单的缩放来说似乎有点过分。

您实际上想要实现什么?如何缩放?到目前为止,您实际尝试了哪些方法(您尝试的方法有哪些),您犯了哪些错误(什么构成成功)?和往常一样,这个问题中的问题描述严重不足(抱歉,无法抗拒)。我认为MatPlotLib文档相当不错。它有一个完整的。如果你能说出你不喜欢的话,他们可能会很高兴在他们的会议上听到。我很确定@tom知道什么是仿射变换。他的评论是为了确保问题的质量。请阅读。他说“规模”在这里没有很好的定义,这是完全正确的。我的回答下面的评论证实:“规模”似乎不仅仅是一个简单的因素,问题中没有提到这一事实。看到你评论的态度,我很遗憾回答了这个问题。减少复杂性确实是可取的。因此,你在问题中给出的例子非常适合。不过,我相信大家都同意,对问题的描述确实不足。这就是人们所评论的。此外,对文档的清晰性大喊大叫,而自己却没有提供清晰的描述,这肯定不会激励其他人提供答案。如果你想进一步澄清这一点,你可以浏览meta或在那里问一个问题。@Daniel,我很清楚什么是仿射变换。我的评论旨在帮助您更好地定义您的问题,以便您能够获得所需的帮助。如果有人告诉你他们尝试过的事情,帮助他们会容易得多。很抱歉,您将其解释为试图帮助您之外的任何事情,并认为有必要攻击那些花费时间来解决您的问题的人。例如,感谢您介绍如何正确应用Affine2D转换。我试图变换的多边形实际上是一个更复杂的形状,也不是在笛卡尔坐标系下,所以在我的例子中,简单的坐标矩阵乘法是行不通的。不过,Affine2D()例程实现了这一点。