>> It looks like rotation/translation should be easy to do with >> Affine2D, so I tried using it, but I can't seem to get it to work >> as expected - here is an example of how I am using it: > > Based on a quick look at image.py and _image.cpp, it appears that > there is a low-level capability to rotate an image in the latter, > but no support at higher levels. It also looks to me like adding > that support would not be trivial--doing it right would take more > than just calling the low-level apply_rotation method. Mike D. > would be the expert on this, though.
Does this mean that the transform= keyword has no effect on imshow in general? I tried doing a simple image translation, and this didn't work either: import numpy as np from matplotlib.pyplot import * from matplotlib.transforms import Affine2D im = np.random.random((10,10)) tr = Affine2D().translate(10.,10.) fig = figure() ax = fig.add_subplot(111) ax.imshow(im,transform=tr) fig.canvas.draw() I attempted to use the pcolormesh() method, which worked, but is impractical, as a 1000x1000 image produces a 300Mb EPS file when plotted in this way. Thanks, Thomas > > Eric > >> import numpy as np >> from matplotlib.pyplot import * >> from matplotlib.transforms import Affine2D >> im = np.random.random((10,10)) >> tr = Affine2D().rotate_deg(45.) >> fig = figure() >> ax = fig.add_subplot(111) >> ax.imshow(im,transform=tr) >> fig.canvas.draw() >> Am I doing something wrong? >> Thanks! >> Thomas >> On Mar 13, 2009, at 5:20 PM, Andrew Straw wrote: >>> Eric Firing wrote: >>>> Thomas Robitaille wrote: >>>>> Hello, >>>>> >>>>> I was wondering whether there is a way to rotate a grayscale/ >>>>> colorscale when using imshow. >>>>> >>>>> I have been using PGPLOT (a fortran/c plotting library) for >>>>> many years >>>>> now, and the equivalent to imshow is called PGGRAY (or PGIMAG). >>>>> One of >>>>> the arguments this function takes is a 6-element array TR which >>>>> is a >>>>> transformation matrix. From the PGPLOT documentation: >>>>> >>>>> "The transformation matrix TR is used to calculate the world >>>>> coordinates of the center of the "cell" that represents each array >>>>> element. The world coordinates of the center of the cell >>>>> corresponding >>>>> to array element A(I,J) are given by: >>>>> X = TR(1) + TR(2)*I + TR(3)*J >>>>> Y = TR(4) + TR(5)*I + TR(6)*J" >>>> >>>> You could do this with the Axes.pcolormesh method. You could >>>> start with >>>> an unrotated grid (generated by meshgrid, for example), apply your >>>> rotation, and use that transformed grid in pcolormesh. Note that >>>> pcolormesh requires the grid for the cell boundaries, not centers. >>>> >>> >>> It should work with imshow() as well if you can set the affine >>> component >>> of the transform to the desired values. Which it looks like you >>> can in >>> Affine2D(). (The affine matrix is the elements of TR listed >>> above, it >>> appears.) >>> >>> I have not tried to do this, however -- just saying that I think >>> it's >>> possible. >>> >>> -Andrew > ------------------------------------------------------------------------------ Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are powering Web 2.0 with engaging, cross-platform capabilities. Quickly and easily build your RIAs with Flex Builder, the Eclipse(TM)based development software that enables intelligent coding and step-through debugging. Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users