Tôi đã cố gắng vẽ một hình elip thành một âm mưu imshow. Nó hoạt động, nhưng vẽ hình elip sau khi vẽ hình ảnh dường như để tăng xlim và ylim, dẫn đến một biên giới, mà tôi muốn thoát khỏi:matplotlib: giới hạn khi sử dụng âm mưu và imshow trong cùng một trục
Lưu ý rằng có NO đường viền màu trắng trực tiếp sau khi gọi imshow.
Mã của tôi trông như sau:
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-")
Tôi đã cố gắng thiết lập các giới hạn trước và sau khi gọi "âm mưu", không có hiệu lực thi hành
# 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)
Làm thế nào tôi có thể buộc âm mưu không tăng giới hạn con số hiện tại?
Solution (nhờ 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)
Hi Joe, cảm ơn vì exp chi tiết của bạn lan rộng! Phiên bản matplotlib của tôi có vẻ quá cũ (matplotlib .__ version__ = '0.99.1.1') vì nó không hỗ trợ cả plt.subplots() lẫn ax.autoscale, tuy nhiên khi bạn chỉ ra autoscale = False, tôi tìm thấy [giải pháp thay thế] (http://stackoverflow.com/questions/7386872/make-matplotlib-autoscaling-ignore-some-of-the-plots) để khắc phục sự cố của tôi: mỗi khi tôi sử dụng cốt truyện sau khi bắt đầu gọi imshow, tôi sử dụng các đối số từ khóa scalex = Sai, scaley = False, cái nào đúng! Cảm ơn bạn! – soramimo