当前位置: 首页 > news >正文

【数据可视化实战】用Matplotlib绘制动态疫情趋势图:从数据到故事

一、项目背景与目标

在《数据可视化》课程中,我们学习了如何将枯燥的数据转化为直观的图表。本次实战项目,我将使用Python的Matplotlib库,结合真实疫情数据(模拟),绘制一个随时间变化的动态折线图,展示多个地区的疫情趋势对比。

通过这个项目,你将学会:

  • 如何使用Matplotlib绘制动态图表

  • 如何美化图表,增强可读性

  • 如何将数据故事化,提升可视化表达力

二、环境准备与数据模拟

我们使用以下库:

  • matplotlib用于绘图

  • numpy用于生成模拟数据

  • pandas用于数据处理

为了模拟真实数据,我生成了2023年1月至12月三个地区(北京、上海、广州)的每月新增确诊数据:

import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation # 生成模拟数据 months = np.arange(1, 13) beijing = np.random.randint(50, 200, size=12) shanghai = np.random.randint(30, 180, size=12) guangzhou = np.random.randint(20, 150, size=12) df = pd.DataFrame({ 'Month': months, 'Beijing': beijing, 'Shanghai': shanghai, 'Guangzhou': guangzhou }) print(df.head())

三、绘制静态趋势图

在绘制动态图之前,我们先绘制一张静态的多线图,用于对比三个地区的趋势:

plt.figure(figsize=(10, 6)) plt.plot(df['Month'], df['Beijing'], marker='o', label='Beijing', linewidth=2) plt.plot(df['Month'], df['Shanghai'], marker='s', label='Shanghai', linewidth=2) plt.plot(df['Month'], df['Guangzhou'], marker='^', label='Guangzhou', linewidth=2) plt.title('Monthly New Cases in Three Cities (2023)', fontsize=16, fontweight='bold') plt.xlabel('Month', fontsize=12) plt.ylabel('New Cases', fontsize=12) plt.legend() plt.grid(True, linestyle='--', alpha=0.6) plt.xticks(df['Month']) plt.tight_layout() plt.savefig('static_trend.png', dpi=300) plt.show()

https://via.placeholder.com/800x400/4CAF50/FFFFFF?text=Static+Chart+Example
(此处为示意图,实际运行时将生成真实图表)

四、进阶:绘制动态趋势图

接下来是本次项目的核心:动态绘制每条折线的增长过程。我们将使用Matplotlib的动画模块:

fig, ax = plt.subplots(figsize=(10, 6)) ax.set_xlim(1, 12) ax.set_ylim(0, 250) ax.set_title('Dynamic Trend of New Cases (2023)', fontsize=16, fontweight='bold') ax.set_xlabel('Month') ax.set_ylabel('New Cases') ax.grid(True, linestyle='--', alpha=0.6) lines = [] colors = ['#FF6B6B', '#4ECDC4', '#45B7D1'] labels = ['Beijing', 'Shanghai', 'Guangzhou'] for i, col in enumerate(['Beijing', 'Shanghai', 'Guangzhou']): line, = ax.plot([], [], marker='o', color=colors[i], label=labels[i], linewidth=2) lines.append(line) def init(): for line in lines: line.set_data([], []) return lines def update(frame): for i, col in enumerate(['Beijing', 'Shanghai', 'Guangzhou']): lines[i].set_data(df['Month'][:frame+1], df[col][:frame+1]) ax.legend() return lines ani = FuncAnimation(fig, update, frames=len(df), init_func=init, blit=True, interval=500) plt.tight_layout() ani.save('dynamic_trend.gif', writer='pillow') plt.show()

https://via.placeholder.com/800x400/2196F3/FFFFFF?text=Dynamic+GIF+Example
(实际运行动画将保存为GIF文件)

五、可视化优化与故事表达

5.1 为什么选择动态图表?

静态图表适合呈现完整趋势,而动态图表能更好地展示时间序列的变化过程,增强叙事感。尤其在数据汇报或教学演示中,动态图表更能吸引注意力。

5.2 美化建议

  • 颜色选择:使用对比明显且舒适的色系(如我使用的三种色调)

  • 标签与标题:标题要简洁有力,坐标轴标签要清晰

  • 图例位置:避免遮挡数据,通常放在右上角或下方

  • 网格线:使用浅色虚线,增强可读性但不喧宾夺主

5.3 数据故事化

在博客或报告中,可以这样描述:

“从动态图中可以看出,北京在春季(3-4月)出现一波小高峰,随后趋于平稳;上海整体波动较小;广州则在夏季(7-8月)有所上升。整体来看,三地疫情趋势均呈波动下降态势。”


六、总结与心得

通过本次实战,我深刻体会到数据可视化不仅是“画图”,更是“讲故事”。Matplotlib虽然入门简单,但其动态功能、样式配置都非常强大,适合做科研、教学、汇报等多种场景的可视化。

如果你也想快速上手数据可视化,推荐以下资源:

  • Matplotlib官方教程

  • Python数据可视化实战案例合集(GitHub)

  • 课程教材:《Python数据可视化之美》(张杰著)


七、完整代码与数据

你可以在我的GitHub仓库中获取本次项目的完整代码、模拟数据与生成图表
🔗 https://github.com/lzzy-yc-3181/DataViz-Dynamic-Trend

http://www.jsqmd.com/news/159578/

相关文章:

  • Part1.Recursive_Algorithm
  • 什么是快捷支付?
  • PHP+MySQL开源订水小程序源码:助力水站数字化转型,轻松搭建自有送水平台
  • PyTorch-CUDA-v2.7镜像资源占用优化说明
  • html5大文件上传插件的加密传输原理与实现
  • Jupyter Notebook自动补全设置:PyTorch API智能提示
  • 最新扣扣秒赞系统源码
  • 送水行业创业!开源可定制的在线订水系统源码,分分钟打造专属配送平台
  • Markdown制作目录:长篇PyTorch教程结构化
  • DiskInfo显示SMART信息解读:判断硬盘寿命
  • 汽车发动机油创新能力哪家强、认证哪家权威、制造口碑哪家佳? - mypinpai
  • 在Ubuntu上使用`appimagetool`和`linuxdeploy`打包可执行文件
  • Markdown绘制流程图:描述PyTorch模型结构
  • PyTorch安装提示No module named ‘torch‘?彻底解决
  • 2025商用智能清洁设备TOP5深度测评:智然达智能清洁设备性价比、兼容性权威解析 - mypinpai
  • Anaconda更新PyTorch到最新稳定版本
  • DiskInfo定期扫描预防坏道影响PyTorch训练
  • 零基础搭建线上水站,PHP开源订水小程序源码系统的核心功能与独特优势
  • DiskInfo监控NVMe温度:防止GPU服务器过热降频
  • 2025年广州脆皮烧鸡烧腊卤味开店/源头厂家推荐排行榜 - 工业设备
  • Jupyter Notebook快捷键大全:PyTorch开发提效
  • DiskInfo分析磁盘碎片:提升PyTorch数据加载效率
  • 2025鹅肠烧腊卤味源头厂家TOP5权威推荐:正宗风味与品质保障指南 - 工业设备
  • SSH连接复用减少PyTorch集群登录延迟
  • Anaconda Prompt执行PyTorch命令无响应?解决方案
  • Anaconda Navigator无法启动PyTorch环境?修复步骤
  • 你不允许不知道!西电通信工程学院复试录取数据
  • 2025年靠谱的防火堵料生产厂家排行榜,新测评精选诚信的防火堵料推荐厂家 - 工业品网
  • 轨道影院是什么?9dvr体验馆设备多少钱?
  • PyTorch安装失败?试试国内镜像源一键安装脚本