From: John H. <jdh...@ac...> - 2005-06-15 14:13:53
|
>>>>> "Stephen" == Stephen Walton <ste...@cs...> writes: Stephen> This was originally a much longer message with a great Stephen> deal of context, but I'm going to make it a lot shorter Stephen> as a series of questions in the hopes of getting a Stephen> Socratic dialog going? Stephen> 1. Is anyone else bothered by the fact that Stephen> imshow(array) displays array[i,j] at Cartesian Stephen> coordinates [j,shape(array)[0]-i] if origin is 'upper' Stephen> and at [j,i] if origin is 'lower'? Just to make sure I understand, does it bother you that rows and columns are reversed, or is there a specific gripe with the upper and lower handling. My motivation in doing is illustrated in this example In [10]: x = arange(50.); x.shape=5,10 In [11]: imshow(x, interpolation='nearest', origin='upper') Out[11]: <matplotlib.image.AxesImage instance at 0xb5f00e6c> In [12]: x Out[12]: [[ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.,] [ 10., 11., 12., 13., 14., 15., 16., 17., 18., 19.,] [ 20., 21., 22., 23., 24., 25., 26., 27., 28., 29.,] [ 30., 31., 32., 33., 34., 35., 36., 37., 38., 39.,] [ 40., 41., 42., 43., 44., 45., 46., 47., 48., 49.,]] The voxels on the screen and the array as printed have the same layout: 5 rows and 10 columns. Basically the inversion happens because event though it is tradtional to think of x as the first axis and y as the second, visually if you move along the x axis you are moving across columns and if you move along the y axis you are moving along rows. In any case, I am not sure exactly what your complaint is (and how you want it to work) so I am just offering a bit of explanation of why it is the way it is. I think matlab behaves differently, but I don't have matlab installed right now. I am not sure that the way we are doing it is the right way, so feel free to offer suggestions. Stephen> 2. In light of the above, how do you handle overlaying Stephen> contours on an image? I see by experiment that Stephen> contour(array) also treats array[i,j] the same way as Stephen> imshow. Right; does that answer your question? If you want to flip the indices, you can always transpose.... Stephen> 3. Are the astronomers as confused by all of this in Stephen> relation to the FITS WCS standard as I seem to be? How Stephen> do I do the computation correctly so that x[i,j] is the Stephen> first WCS coordinate of FITS pixel (i,j) (which is at Stephen> array[j-1,i-1] after a PyFITS read)? I'll leave this one to the astronomers... If desired, we can probably add an option to handle images in the layout that is typical for astronomers, but the image and contour code is already a bit hairy trying to deal with upper and lower origin. JDH |