2016-02-20 2 views
1

У меня есть тяжелый сюжет, и все нормально, что он вычисляет пару секунд, но когда я изменяю размер окна/диаграммы - его время от времени зависает, и это явно не поведение для меня. Как я могу это исправить? Нет никаких изменений в данных сюжета, просто изменение размера.
Demo:Улучшите скорость изменения размера участка (matplotlib) внутри GTK-окна

import numpy as np 
import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk 

import matplotlib 
matplotlib.use('GTKCairo') 
from matplotlib.figure import Figure 
from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo as FigureCanvas 

class MyApp: 
    def __init__(self): 
     self.Window = Gtk.Window() 
     graphFig = Figure() 
     graphCanvas = FigureCanvas(graphFig) 
     self.Window.add(graphCanvas) 

     # just example of heavy chart 
     subplot = graphFig.add_subplot(111) 
     for n in range(100): 
      x = np.arange(0, 100, 0.01) 
      y = np.sin(x) * n 
      subplot.plot(x, y) 

     return 

    def Run(self): 
     self.Window.show_all() 
     Gtk.main() 
     return 

App = MyApp() 
App.Run() 

Какие существуют варианты фиксации этого вопроса? Я хочу перерисовать диаграмму только тогда, когда она обновляется или когда пользователь панорамирует/масштабирует ее.

+0

Вы рисуете 100 строк по 10000 баллов ... В зависимости от используемого вами компьютера это может быть медленным. Не могли бы вы обновить код с более реалистичным примером. Кроме того, использование 'plt' для осей может вводить в заблуждение. Обычно люди используют 'import matplotlib.pyplot как plt'. – kikocorreoso

+0

@kikocorreoso я изменил plt на подзаговор. –

ответ

0

Чтобы ускорить построение графика, рассмотрите построение линий нижнего разрешения. 100 строк по 1000 образцов каждый - много рисунка.

Запрет на то, что this post имеет очень подробный ответ, который может помочь вам повысить скорость.

Смежные вопросы