Ho cercato di tracciare un'ellisse in una trama di presentazione. Funziona, ma tracciando l'ellisse dopo aver tracciato l'immagine sembra aumentare XLIM e ylim, risultando in un confine, che mi piacerebbe per sbarazzarsi di:matplotlib: limiti quando si utilizza la trama e l'imshow negli stessi assi
Nota che c'è nessuna bordo bianco direttamente dopo aver chiamato solo imshow.
Il mio codice si presenta come segue:
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-")
Ho provato a installare i limiti prima e dopo la chiamata "complotto", senza alcun effetto
# 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)
Come posso forzare trama non aumentare limiti di figure esistenti?
Solution (grazie 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)
Ciao Joe, grazie per il vostro exp dettagliata lanation! La mia versione di matplotlib sembra essere troppo vecchia (matplotlib .__ version__ = '0.99.1.1') in quanto non supporta né plt.subplots() né ax.autoscale, tuttavia come hai indicato autoscale = False, ho trovato una [soluzione alternativa] (http://stackoverflow.com/questions/7386872/make-matplotlib-autoscaling-ignore-some-of-the-plots) che corregge il mio problema: ogni volta che uso la trama dopo aver inizialmente chiamato imshow, utilizzo gli argomenti della parola chiave scalex = False, scaley = False, che fa la cosa giusta! Grazie! – soramimo