Python实时绘图:替换i值而非追加实现单x值柱状图动态更新
实时单柱动态更新实现方案
核心修改逻辑
- 固定x轴唯一刻度值为常量,无需动态追加x序列生成新刻度
- 复用柱状图对象,仅更新柱子高度属性,避免重复创建图层导致的内存上涨和渲染卡顿
- 移除x轴范围动态计算逻辑,固定显示范围适配单个柱子即可
修改后完整代码
import time import psutil import matplotlib.pyplot as plt %matplotlib notebook fig = plt.figure() ax = fig.add_subplot(111) # 固定y轴范围为CPU使用率的合理区间0-100 ax.set_ylim(0, 100) # 固定x轴范围,仅容纳单个柱子 ax.set_xlim(-0.5, 0.5) plt.axis('off') fig.show() # 首次创建单个柱子,保存柱子对象后续复用 bar = ax.bar(0, 0, color='b') while True: current_cpu = psutil.cpu_percent() # 直接更新柱子高度,无需重新创建柱状图 bar[0].set_height(current_cpu) fig.canvas.draw() time.sleep(0.1)
补充说明
- 如果需要显示x轴刻度,删除
plt.axis('off')语句,自定义x轴刻度标签为固定值即可 - 若后续需要同时展示多个固定位置的柱子,只要给每个柱子分配固定的x值(比如0、1、2),分别保存对应的柱子对象单独更新高度即可
内容的提问来源于stack exchange,提问作者Researchderp
相关产品推荐
相关产品推荐

