Re: [Matplotlib-users] contour overlapping
Thank you Matthias, Sebastin and Armin!!! My matrices are square matrices and not rectangular one. I tried the way of creating a new matrix from existing ones as suggested by matthias and it worked great. I will try the masked array method too. Thank you all once again, Bala On Wed, May 13, 2009 at 6:45 PM, Matthias Michler matthiasmich...@gmx.netwrote: Hi Bala, I'm not sure I understand, what you want, but maybe the following goes towards your direction # initialise two matrices with data matrix1 = ones((4,4)) matrix2 = 2*ones((4,4)) # and one empty matrix matrix3 = zeros((4, 4)) for i in xrange(len(matrix3[:, 0])): # all rows for j in xrange(len(matrix3[0, :])):# all columns if i j: # if below diagonal take matrix1 matrix3[i, j] = matrix1[i, j] elif i j: # if above diagonal take matrix 2 matrix3[i, j] = matrix2[i, j] In [40]: print matrix3 Out[40]: array([[ 0., 2., 2., 2.], [ 1., 0., 2., 2.], [ 1., 1., 0., 2.], [ 1., 1., 1., 0.]]) With that matrix3 holds elements of matrix2 in the upper part and elements of matrix1 below the diagonal. This one could be plotted with contour or contourf. Is that what you want? best regards Matthias On Wednesday 13 May 2009 18:12:53 Bala subramanian wrote: Armin, I tried this but what happens is it is not overlapping, actually when i call contour function for the second time with matrix2, the plot is updated with contour of matrix 2. contour(matrix1) contour(matrix2). What i finally get is the contour of matrix 2 as the final plot. What i am trying to do is that, i shd have one plot, with upper left panel for matrix1 and lower right panel for matrix2 with their separation along the diagonal. I have attached an example picture like which i am trying to make. Bala On Wed, May 13, 2009 at 5:33 PM, Armin Moser armin.mo...@student.tugraz.atwrote: Bala subramanian schrieb: hai Armin, I looked through the examples. I could not find any example of overlapping two differnet countours on the same plot. I think the first example filled contours does exactly that. You want to show two contours over each other in the same plot. You just have to substitute the Z in cset_1 with matrix_1 and in cset_2 with matrix_2. Of course it will be helpful to use different colormaps. E.g. a grey one for the underlying contour and a colored for the top one. x = arange(5) y = arange(5) x,y = meshgrid(x,y) Z = x**2+y**2 #contourf(Z,cmap=cm.binary) # filled contours gray contour(Z) # not filled contours colored error = rand(x.shape[0],x.shape[1]) # to generate a new Z Z = (x+error)**2+(y+error)**2 contour(Z) # colored not filled contours Armin -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] contour overlapping
Armin Moser wrote: Sebastian Busch wrote: ... array([list(a[i,:i])+list(b[i,i:]) for i in range(a.shape[0])]) It seems that I did not understand what you tried to reach. ... Sorry. I wanted to do the same as Matthias -- taking his example: = from scipy import ones, array matrix1 = ones((4,4)) matrix2 = 2*ones((4,4)) matrix3 = array([list(matrix1[i,:i])+list(matrix2[i,i:])\ for i in range(matrix1.shape[0])]) = yields matrix3 array([[ 2., 2., 2., 2.], [ 1., 2., 2., 2.], [ 1., 1., 2., 2.], [ 1., 1., 1., 2.]]) it's quite the same, you just have to type less :) best, sebastian. signature.asc Description: OpenPGP digital signature -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] contour overlapping
Sebastian Busch schrieb: Armin Moser wrote: Sebastian Busch wrote: ... array([list(a[i,:i])+list(b[i,i:]) for i in range(a.shape[0])]) It seems that I did not understand what you tried to reach. ... Sorry. I wanted to do the same as Matthias -- taking his example: I meant I did not understand in the first what Bala tried to reach. I have answered to the wrong mail and quoted badly. Sorry Armin -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] contour overlapping
Friends, I have two matrices of same size. I used contourf to create the countour plots for the two matrices separately. i) I am interested in making one countour plot marking the areas which are different in both the countours or ii) Overlapping one countour over the other, so that i can compare the upper and lower diagonals that can represent count1 and count2. Kindly suggest me some ideas. Thanks, Bala -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] contour overlapping
Hi Bala, On Wednesday 13 May 2009 13:16:17 Bala subramanian wrote: Friends, I have two matrices of same size. I used contourf to create the countour plots for the two matrices separately. i) I am interested in making one countour plot marking the areas which are different in both the countours or What you could do quite easily is making one additional countour plot of the difference of the two matrices, e.g. absolute(matrix1 - matrix2). ii) Overlapping one countour over the other, so that i can compare the upper and lower diagonals that can represent count1 and count2. I don't know if there is a possibility of overlaying two contours and somehow switching there alpha-value dynamically, which could be useful, but an overlay contourf of matrix1 and contour (not filled) for matrix 2 could be done. best regards Matthias -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] contour overlapping
Dear Matthias, Thank you for the information. Could you please provide me a small example of such overlapping. Thanks, Bala On Wed, May 13, 2009 at 1:50 PM, Matthias Michler matthiasmich...@gmx.netwrote: Hi Bala, On Wednesday 13 May 2009 13:16:17 Bala subramanian wrote: Friends, I have two matrices of same size. I used contourf to create the countour plots for the two matrices separately. i) I am interested in making one countour plot marking the areas which are different in both the countours or What you could do quite easily is making one additional countour plot of the difference of the two matrices, e.g. absolute(matrix1 - matrix2). ii) Overlapping one countour over the other, so that i can compare the upper and lower diagonals that can represent count1 and count2. I don't know if there is a possibility of overlaying two contours and somehow switching there alpha-value dynamically, which could be useful, but an overlay contourf of matrix1 and contour (not filled) for matrix 2 could be done. best regards Matthias -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] contour overlapping
Bala subramanian schrieb: Dear Matthias, Thank you for the information. Could you please provide me a small example of such overlapping. Look at http://matplotlib.sourceforge.net/examples/pylab_examples/contour_image.html or any other contour example from this page: http://matplotlib.sourceforge.net/examples/index.html Armin -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] contour overlapping
Bala subramanian schrieb: hai Armin, I looked through the examples. I could not find any example of overlapping two differnet countours on the same plot. I think the first example filled contours does exactly that. You want to show two contours over each other in the same plot. You just have to substitute the Z in cset_1 with matrix_1 and in cset_2 with matrix_2. Of course it will be helpful to use different colormaps. E.g. a grey one for the underlying contour and a colored for the top one. x = arange(5) y = arange(5) x,y = meshgrid(x,y) Z = x**2+y**2 #contourf(Z,cmap=cm.binary) # filled contours gray contour(Z) # not filled contours colored error = rand(x.shape[0],x.shape[1]) # to generate a new Z Z = (x+error)**2+(y+error)**2 contour(Z) # colored not filled contours Armin -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] contour overlapping
Hi Bala, I'm not sure I understand, what you want, but maybe the following goes towards your direction # initialise two matrices with data matrix1 = ones((4,4)) matrix2 = 2*ones((4,4)) # and one empty matrix matrix3 = zeros((4, 4)) for i in xrange(len(matrix3[:, 0])): # all rows for j in xrange(len(matrix3[0, :])):# all columns if i j: # if below diagonal take matrix1 matrix3[i, j] = matrix1[i, j] elif i j: # if above diagonal take matrix 2 matrix3[i, j] = matrix2[i, j] In [40]: print matrix3 Out[40]: array([[ 0., 2., 2., 2.], [ 1., 0., 2., 2.], [ 1., 1., 0., 2.], [ 1., 1., 1., 0.]]) With that matrix3 holds elements of matrix2 in the upper part and elements of matrix1 below the diagonal. This one could be plotted with contour or contourf. Is that what you want? best regards Matthias On Wednesday 13 May 2009 18:12:53 Bala subramanian wrote: Armin, I tried this but what happens is it is not overlapping, actually when i call contour function for the second time with matrix2, the plot is updated with contour of matrix 2. contour(matrix1) contour(matrix2). What i finally get is the contour of matrix 2 as the final plot. What i am trying to do is that, i shd have one plot, with upper left panel for matrix1 and lower right panel for matrix2 with their separation along the diagonal. I have attached an example picture like which i am trying to make. Bala On Wed, May 13, 2009 at 5:33 PM, Armin Moser armin.mo...@student.tugraz.atwrote: Bala subramanian schrieb: hai Armin, I looked through the examples. I could not find any example of overlapping two differnet countours on the same plot. I think the first example filled contours does exactly that. You want to show two contours over each other in the same plot. You just have to substitute the Z in cset_1 with matrix_1 and in cset_2 with matrix_2. Of course it will be helpful to use different colormaps. E.g. a grey one for the underlying contour and a colored for the top one. x = arange(5) y = arange(5) x,y = meshgrid(x,y) Z = x**2+y**2 #contourf(Z,cmap=cm.binary) # filled contours gray contour(Z) # not filled contours colored error = rand(x.shape[0],x.shape[1]) # to generate a new Z Z = (x+error)**2+(y+error)**2 contour(Z) # colored not filled contours Armin -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] contour overlapping
Matthias Michler wrote: ... for i in xrange(len(matrix3[:, 0])): # all rows for j in xrange(len(matrix3[0, :])):# all columns ... if your matrices a and b are rectangular (and i think the diagonal makes only sense in this case), you can also say: array([list(a[i,:i])+list(b[i,i:]) for i in range(a.shape[0])]) best, sebastian. p.s.: i think it would be a nice feature to put matplotlib-users@lists.sourceforge.net as reply-to in the mails distributed via the list -- i keep hitting the 'reply'-button and wonder why my mails do not show up in the list... signature.asc Description: OpenPGP digital signature -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] contour overlapping
Sebastian Busch wrote: Matthias Michler wrote: ... for i in xrange(len(matrix3[:, 0])): # all rows for j in xrange(len(matrix3[0, :])):# all columns ... if your matrices a and b are rectangular (and i think the diagonal makes only sense in this case), you can also say: array([list(a[i,:i])+list(b[i,i:]) for i in range(a.shape[0])]) It seems that I did not understand what you tried to reach. Sorry for pointing into the wrong direction. Another possibility would be to use masked arrays: 8- from pylab import * x = arange(100) y = arange(100) x,y = meshgrid(x,y) Z = x**2+y**2 mask = ones(Z.shape) # contour, imshow, pcolor do not show values at positions # where the mask is True lower_left_masked = triu(mask)==0 # lower left part in matrix masked Z = ma.masked_array(Z,mask=lower_left_masked) contourf(Z,origin='lower') error = rand(x.shape[0],x.shape[1]) upper_right_masked = tril(mask)==0 Z = (x+error)**2+(y+error)**2 Z = ma.masked_array(Z,mask=upper_right_masked) contourf(Z,cmap=cm.binary) axis('tight') show() -- The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users