Python数据可视化实战:Matplotlib动态图表绘制技巧
一、动态可视化的核心价值
在数据分析领域,动态图表能直观展示数据随时间变化的趋势。Matplotlib的FuncAnimation
模块提供了强大的动态图表生成能力,特别适合监控系统、实时数据展示等场景。
二、核心API解析
from matplotlib.animation import FuncAnimation
# 关键参数说明:
# fig: 画布对象
# func: 每帧更新函数
# frames: 动画帧数
# interval: 帧间隔(ms)
三、实战案例:CPU使用率动态监控
import matplotlib.pyplot as plt
import psutil
from matplotlib.animation import FuncAnimation
plt.style.use('ggplot')
fig, ax = plt.subplots(figsize=(10,5))
ax.set_ylim(0, 100)
def init():
ax.set_title('CPU使用率实时监控')
ax.set_xlabel('时间(s)')
ax.set_ylabel('使用率(%)')
return []
def update(frame):
cpu_percent = psutil.cpu_percent()
xdata = list(range(frame+1))
ydata = [psutil.cpu_percent() for _ in range(frame+1)]
ax.clear()
ax.plot(xdata, ydata, 'r-', lw=2)
ax.fill_between(xdata, ydata, alpha=0.2)
ax.set_ylim(0, 100)
return []
ani = FuncAnimation(fig, update, frames=60,
init_func=init, interval=1000)
plt.tight_layout()
plt.show()
运行效果:每秒更新一次CPU使用率折线图,持续60秒
四、高级技巧:多子图动态更新
# 同时监控CPU和内存使用率
def multi_update(frame):
cpu = psutil.cpu_percent()
mem = psutil.virtual_memory().percent
ax1.clear()
ax2.clear()
# CPU子图更新逻辑
ax1.plot(cpu_history, 'b-')
ax1.set_title('CPU使用率')
# 内存子图更新逻辑
ax2.bar(['内存'], [mem], color='g')
ax2.set_title('内存占用')
五、性能优化建议
- 使用
blit=True
参数实现局部重绘 - 合理设置
interval
避免资源浪费 - 对大数据集使用
set_data()
而非清除重绘 - 考虑使用
animation.save()
导出GIF/MP4