加速 Matplotlib

Sam*_*uel 5 python matplotlib

目前我正在制作实时绘图,但可视化速度非常慢。我想知道一般可以做哪些事情来加快 Matplotlib 中的速度:

  • 后端如何影响性能?是否有比其他后端更适合实时绘图的后端?
  • 我可以降低分辨率来提高 FPS 吗?
  • 如果减小窗口大小,为什么绘图的 FPS 会增加?为什么切换到全屏模式后 FPS 会急剧下降?

我还尝试关闭所有我不需要的东西:

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)

是否有更好的方法来更新图中的对象?

Imp*_*est 1

后端如何影响性能?是否有比其他后端更适合实时绘图的后端?

后端扮演两个角色:首先,它渲染所有内容,因此渲染速度越快,输出就越快。其次,所使用的 GUI 工具包可能会发挥作用,因为它可能会限制更新画布的显示速度。它似乎比例"Qt5Agg"如更快"TkAgg"

我可以降低分辨率来提高 FPS 吗?

您可以缩小图形,或使用较小的 dpi。两者都会减少需要绘制的像素数量,从而加快绘制速度。

如果减小窗口大小,为什么绘图的 FPS 会增加?为什么切换到全屏模式后 FPS 会急剧下降?

如上所述,需要在屏幕上绘制的像素越多意味着渲染速度越慢。

还有更多我可以关闭的东西吗?

我们不知道您的代码中有什么,因此我们不知道要关闭什么。

关闭这些按钮可以提高速度吗?

不。


最后,fig.canvas.draw_idle()它本身应该足以更新绘图,因为通常您已经运行了事件循环。重新启动事件循环没有帮助。