python - Matplotlib:图标题不更新?
问题描述
我需要制作一个绘图并多次更新(100 次或 1000 次),所以我需要 Python 快速更新它。我找到了一个很好的解决方案,但我不允许添加评论。
这是参考答案的代码:
import time
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
line, = ax.plot(np.random.randn(100))
fig.canvas.draw()
plt.show(block=False)
tstart = time.time()
num_plots = 0
while time.time()-tstart < 5:
line.set_ydata(np.random.randn(100))
ax.draw_artist(ax.patch)
ax.draw_artist(line)
fig.canvas.blit(ax.bbox)
fig.canvas.flush_events()
num_plots += 1
print(num_plots/5)
为了获得完美的解决方案,除了线条之外,我还需要更新情节的标题。例如,我想在图的标题中打印迭代编号(或循环的一些计数器)。
这个怎么做?
我尝试在 while 循环中更新图形的标题,但标题会打印 num_plots 的第一个值,然后是最后一个值,中间没有任何内容。更具体地说,我添加了
ax.set_title('num_plots = ' + str(num_plots))
作为 while 循环内的最后一行,它会导致这种行为,您可以看到标题仅在循环结束时更新(即使指令在其中): 单击此处查看动画 gif
解决方案
您可以在返回的文本对象中设置字符串title
,就像在 plot 返回的 line 对象中设置 ydata 一样:
titl = ax.set_title('')
while time.time()-tstart < 5:
...
titl.set_text(f'num_plots = {num_plots}')
推荐阅读
- swift - 无法在 Swift 5 下更改导航栏色调颜色
- python - 使用不同的类从 HTML 表中抓取数据
- c# - 从文本文件中移动带有点列表的对象
- reactjs - React Router 6 alpha 4 嵌套路由
- python - 使用 setattr() 重载已经存在的类定义中的方法
- terraform - 如何在 terraform local-exec 中的 powershell 脚本下运行
- amazon-web-services - 使用 sub_filter 从 nginx 迁移到 istio/envoy
- javascript - 我想通过单击在 highcharts 上动态更新我的系列并通过单击另一个按钮将其恢复为原始方式(#previous)
- css - 如何使用 Material-UI Grid 组件正确实现此布局
- javascript - 在图像标签库上预加载图像