On Fri, Jan 27, 2012 at 9:13 AM, Pål Gunnar Ellingsen <paa...@gmail.com>wrote:

> Hi
>
> I have a array, M, which is (4Nx4M), and an array (image), im, which is
> NxM.
> I can currently plot the matrix as a 2d image using imshow using:
>
> import matplotlib.pyplot as plt
> from matplotlib import cm
>
> # some code for reading in the matrix
>
> cmap = cm.get_cmap('jet', 256)
> imM = plt.imshow(M, cmap=cmap, vmin= -1, vmax=1)
>
> But now i would like to plot im on top of M, such that it covers the firs
> element of M.
> If I do
>
> plt.hold()
> plt.imshow(im)
>
> I only see im, and not M. I'm used to doing this in Matlab, where this
> would work.
>
> Can anyone explain me what I'm doing wrong?
>
>
> Kind Regards
>

A call to `plt.autoscale` should fix your problem. It looks like `imshow`
rescales the axes limits to the current image limits, instead of the limits
for all the data in the axes. (Executable example below; note, axes "hold"
by default, so it's not necessary to call hold).

-Tony



import numpy as np
import matplotlib.pyplot as plt

background = np.random.uniform(0, 255, size=(20, 20))
overlay = np.arange(25).reshape((5, 5))

plt.imshow(background, interpolation='nearest', cmap=plt.cm.gray)
plt.imshow(overlay, cmap=plt.cm.jet, alpha=0.5)
# You could also replace this with `plt.axis([0, 20, 0, 20])
plt.autoscale()
plt.show()
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to