Matplotlib против Vispy приводит к отсутствию разницы в производительности - PullRequest
0 голосов
/ 22 марта 2019

Я хочу использовать vispy v0.5.3 с python3-pyqt4.qtopengl привязками, чтобы ускорить мои анимированные сюжеты. Тем не менее, я создал минимальный пример, где я просто сдвигаю синусоидальную волну, и обе версии приводят к одной и той же большой нагрузке на мой процессор. Тем не менее, это на самом деле связано с графикой, а не с другими тупыми операциями. Любая идея, как использовать Vispy в данном примере, чтобы ускорить его?

Matplotlib:

import numpy as np
import time
import matplotlib
import matplotlib.pyplot as plt

# Plot the target square wave shape
x = np.linspace(0, 2*np.pi, num=1000, endpoint=False)
y = np.sin(x)

fig, ax = plt.subplots(1,1, figsize=(6,5), dpi=100)
ax.set_title("sine wave")
line, = ax.plot(x, y, c='k') # width 4
ax.set_xlabel("time (s)")
ax.set_ylabel("amplitude")

if __name__ == '__main__':
    while True:
        y = np.roll(y,1)
        line.set_ydata(y)
        fig.canvas.flush_events()
        plt.show(block=False)
        time.sleep(0.01)

vispy:

import numpy as np
import time
from vispy import plot as vp
from vispy import app as app

fig = vp.Fig(size=(600, 500), show=True)

# Plot the target square wave shape
x = np.linspace(0, 2*np.pi, num=1000, endpoint=False)
y = np.sin(x)
line = fig[0, 0].plot((x, y), width=4, color='k',
                      title='sine wave', xlabel='time (s)',
                      ylabel='amplitude')

labelgrid = fig[0, 0].view.add_grid(margin=10)

bottom_spacer = vp.Widget()
labelgrid.add_widget(bottom_spacer, row=1, col=0)

grid = vp.visuals.GridLines(color=(0, 0, 0, 0.5))
grid.set_gl_state('translucent')
fig[0, 0].view.add(grid)

if __name__ == '__main__':
    while True:
        y = np.roll(y,1)
        line.set_data((x, y))
        app.process_events()
        time.sleep(0.01)
...