Performans sorunları nedeniyle tam arsa yeniden çizilmeden biraz arsa değiştirmek istiyorum. Fare üst arsa üzerinde hareket ederkenÇizgiyi bağımsız olarak temizleyin ve temizleyin
, ben imlecin x pozisyonunda tüm şemalarda noktalı dikey çizgi çizmek istiyorum. Performanstan dolayı, tüm arazileri tekrar çizmek istemiyorum, ama sadece dikey çizgiyi.
axvline()
ile ilgili satırları görüntüleyebiliyordum, ancak sonra çizime yeniden tıklanırsa çizilmiş çizgiyi silme problemim var.
Her arsada ikinci katmana sahip olmak isterim, bağımsız çizim yapabilir ve temizleyebilirim. Daha sonra ayrıca, arsa ve dikey çizginin kesişim noktasında bir nokta çizip bunun altındaki y değerini yazdıracağım.
this numaralı belgeyi, etiket ve ölçek gibi bağımsız bir çizimin çizimi hakkında buldum. Ama ben diyagramın bir kısmını yeniden çizmek istiyorum. Ek bir katman veya verimli bir şekilde çizmenin başka bir yolu var mıdır?
Uygulama, matplotlib.backends.backend_qt4agg
numaralı PyQt4
numaralı makaleye dayanmaktadır. Ipython dizüstü
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(3, 2, wspace=0.1, height_ratios=[3,1,1])
main_plot = plt.subplot(gs[0, :])
sub_plots = [plt.subplot(gs[1, x]) for x in range(2)]
sub_plots.extend([plt.subplot(gs[2, x]) for x in range(2)])
main_plot.plot(np.arange(100), [np.random.randint(0, 100) for y in range(100)])
for sub_plot in sub_plots:
sub_plot.plot(np.arange(100), [np.random.randint(0, 100) for y in range(100)])
için
Minimal düzen kodu
def __init__(self):
self.figure = Figure((20.0, 10.0), dpi=100)
self.figure.patch.set_color('w')
gs = gridspec.GridSpec(3, 2, wspace = 0.1, height_ratios=[3, 1, 1])
self.main_plot = self.figure.add_subplot(gs[0, :])
self.sub_plots = [self.figure.add_subplot(gs[1, x]) for x in range(2)]
self.sub_plots.extend([self.figure.add_subplot(gs[2, x]) for x in range(2)])
self.plotCanvas = FigureCanvas(self.figure)
self.plotCanvas.mpl_connect('button_press_event', self._on_click)
def _on_click(self, event):
if event.inaxes == self.main_plot:
self.main_plot.axvline(event.xdata)
for plot_area in self.sub_plots:
plot_area.axvline(event.xdata)
self.plotCanvas.draw()
return
Herhangi bir veriyi çizmiyorsam, konumunu değiştiren bir satır görüyorum. Güzel. Ancak performans hala çok düşük ve verileri çizirsem, çizgi arsa tarafından gizlenir. 'Zorder' ile uğraşmaya çalıştım ama hiçbir şey değiştirmiyor. – DreyFax