【问题标题】:How to translate objects with the matplotlib library in Python如何在 Python 中使用 matplotlib 库翻译对象
【发布时间】:2018-09-27 16:25:55
【问题描述】:

我对 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)

与其让它沿轴创建新形状,我想知道是否有一种方法可以获取一个形状并将其复制到不同的位置。

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

    这就是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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-11
      • 2016-02-12
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2015-03-17
      相关资源
      最近更新 更多