目前我正在制作实时绘图,但可视化速度非常慢。我想知道一般可以做哪些事情来加快 Matplotlib 中的速度:
我还尝试关闭所有我不需要的东西:
ax.set_xticklabels(())
ax.set_yticklabels(())
ax.set_xticks([])
ax.set_yticks([])
ax.axis('off')
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
Run Code Online (Sandbox Code Playgroud)
然而,效果可以忽略不计。还有更多我可以关闭的东西吗?
我还想知道是否可以关闭创建图表时打开的窗口的按钮(主页按钮等,见下文)。关闭这些按钮可以提高速度吗?
我还发现执行以下操作
fig.canvas.draw_idle()
fig.canvas.start_event_loop(1e-9)
Run Code Online (Sandbox Code Playgroud)
更新情节比
fig.canvas.draw_idle()
self.fig.canvas.update()
self.fig.canvas.flush_events()
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法来更新图中的对象?
后端如何影响性能?是否有比其他后端更适合实时绘图的后端?
后端扮演两个角色:首先,它渲染所有内容,因此渲染速度越快,输出就越快。其次,所使用的 GUI 工具包可能会发挥作用,因为它可能会限制更新画布的显示速度。它似乎比例"Qt5Agg"
如更快"TkAgg"
。
我可以降低分辨率来提高 FPS 吗?
您可以缩小图形,或使用较小的 dpi。两者都会减少需要绘制的像素数量,从而加快绘制速度。
如果减小窗口大小,为什么绘图的 FPS 会增加?为什么切换到全屏模式后 FPS 会急剧下降?
如上所述,需要在屏幕上绘制的像素越多意味着渲染速度越慢。
还有更多我可以关闭的东西吗?
我们不知道您的代码中有什么,因此我们不知道要关闭什么。
关闭这些按钮可以提高速度吗?
不。
最后,fig.canvas.draw_idle()
它本身应该足以更新绘图,因为通常您已经运行了事件循环。重新启动事件循环没有帮助。