He intentado trazar una elipse en un diagrama de imshow. Funciona, pero el trazado de la elipse después de trazar la imagen parece aumentar xlim y ylim, lo que resulta en una frontera, lo que me gustaría deshacerse de:matplotlib: límites cuando se usa plot e imshow en los mismos ejes
Tenga en cuenta que no hay frontera blanca directamente después de llamar a imshow solamente.
Mi código es el siguiente:
self.dpi = 100
self.fig = Figure((6.0, 6.0), dpi=self.dpi)
self.canvas = FigureCanvas(self.fig)
self.canvas.setMinimumSize(800, 400)
self.cax = None
self.axes = self.fig.add_subplot(111)
self.axes.imshow(channel1, interpolation="nearest")
self.canvas.draw()
self.axes.plot(dat[0], dat[1], "b-")
He tratado de establecer los límites antes y después de llamar "trama", sin efecto
# get limits after calling imshow
xlim, ylim = pylab.xlim(), pylab.ylim()
...
# set limits before/after calling plot
self.axes.set_xlim(xlim)
self.axes.set_ylim(ylim)
¿Cómo puedo forzar parcela no aumentar ¿Límites de figura existentes?
Solución (gracias a Joe):
#for newer matplotlib versions
self.axes.imshow(channel1, interpolation="nearest")
self.axes.autoscale(False)
self.axes.plot(dat[0], dat[1], "b-")
#for older matplotlib versions (worked for me using 0.99.1.1)
self.axes.imshow(channel1, interpolation="nearest")
self.axes.plot(dat[0], dat[1], "b-", scalex=False, scaley=False)
Hola Joe, gracias por su detallada exp ¡lanation! Mi versión matplotlib parece ser demasiado antigua (matplotlib .__ version__ = '0.99.1.1') ya que no admite ni plt.subplots() ni ax.autoscale, sin embargo, como señaló autoscale = False, encontré una [solución alternativa] (http://stackoverflow.com/questions/7386872/make-matplotlib-autoscaling-ignore-some-of-the-plots) que soluciona mi problema: cada vez que uso plot después de llamar inicialmente a imshow, utilizo la palabra clave arguments scalex = False, scaley = False, ¡que hace lo correcto! ¡Gracias! – soramimo