Как переводить объекты с помощью библиотеки matplotlib в Python - PullRequest
0 голосов
/ 27 сентября 2018

Я довольно новичок в 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)

Вместо того, чтобы создавать новые фигуры вдоль осей, я хотел бы знать, есть ли способ взять одну фигуру и скопировать ее вразные позиции.

1 Ответ

0 голосов
/ 28 сентября 2018

Это то, для чего можно использовать 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()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...