Hello, I am interested in using the Matplotlib transformation framework to transform a rectangle into a different coordinate system. I am therefore defining a Rectangle patch and setting the transform to what I want. If I apply a non-linear transformation, the edges of the rectangle should no longer necessarily be straight lines. Consider the following example:
--- import numpy as np import matplotlib.pyplot as plt from matplotlib.transforms import Affine2D from matplotlib.patches import Rectangle, Polygon fig = plt.figure() ax = fig.add_subplot(1,1,1) transform = Affine2D().rotate_deg(2) + ax.transData # Add rectangle r = Rectangle((0.5,0.5),width=10,height=10, transform=transform, edgecolor='red', facecolor='none') ax.add_patch(r) # Add oversampled rectangle x = np.array([0.5, 10.5, 10.5, 0.5, 0.5]) y = np.array([0.5, 0.5, 10.5, 10.5, 0.51]) x_i = np.interp(np.linspace(0., 4., 10000), np.arange(5), x) y_i = np.interp(np.linspace(0., 4., 10000), np.arange(5), y) p = Polygon(list(zip(x_i, y_i)), transform=transform, edgecolor='green', facecolor='none') ax.add_patch(p) ax.set_xscale('log') ax.set_yscale('log') fig.savefig('test.png') --- The green lines show what I would expect the rectangle to look like, and the red is what it ends up looking like if I use the Rectangle patch. What must be happening is that only the vertices of the rectangle get transformed and then are connected by straight lines. So my question is, is there a way to make the Rectangle patch behave like the custom polygon I'm creating here? Thanks for any advice, Cheers, Tom ------------------------------------------------------------------------------ Slashdot TV. Video for Nerds. Stuff that matters. http://tv.slashdot.org/ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users