Matplotlib: rotating a patch

后端 未结 2 1270
栀梦
栀梦 2020-12-06 05:03

I wanted to rotate a Rectangle in matplotlib but when I apply the transformation, the rectangle doesn\'t show anymore:

rect = mpl.patches.Rectangle((0.0120,0         


        
2条回答
  •  死守一世寂寞
    2020-12-06 05:44

    The patch in the provided code makes it hard to tell what's going on, so I've made a clear demonstration that I worked out from a matplotlib example:

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.patches as patches
    import matplotlib as mpl
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    r1 = patches.Rectangle((0,0), 20, 40, color="blue", alpha=0.50)
    r2 = patches.Rectangle((0,0), 20, 40, color="red",  alpha=0.50)
    
    t2 = mpl.transforms.Affine2D().rotate_deg(-45) + ax.transData
    r2.set_transform(t2)
    
    ax.add_patch(r1)
    ax.add_patch(r2)
    
    plt.xlim(-20, 60)
    plt.ylim(-20, 60)
    
    plt.grid(True)
    
    plt.show()
    

    enter image description here

提交回复
热议问题