Python第十四课:数据可视化 | 信息炼金术

🎯 本节目标

  • 掌握Matplotlib基础图表绘制
  • 理解Seaborn高级统计可视化
  • 学会使用Pyecharts制作交互式图表
  • 开发实战项目:疫情数据动态仪表盘
  • 掌握可视化设计原则与优化技巧

1️⃣ 可视化工具全景图


📊 生活化比喻:

  • Matplotlib → 手工雕刻刀(精细但需技巧)
  • Seaborn → 智能雕刻机(快速成型)
  • Pyecharts → 全息投影仪(动态交互)

2️⃣ Matplotlib基础:从折线到热力图

📈 折线图与柱状图

python 复制代码
import matplotlib.pyplot as plt  
import numpy as np  

x = np.arange(2020, 2024)  
y = [120, 135, 98, 156]  

plt.figure(figsize=(10,6))  
plt.plot(x, y, marker='o', linestyle='--', color='#2c7fb8', label='销售额')  
plt.bar(x, y, alpha=0.3, color='#7fcdbb')  
plt.title('年度销售趋势', fontsize=14)  
plt.xlabel('年份')  
plt.ylabel('金额(万元)')  
plt.legend()  
plt.grid(True, linestyle=':')  
plt.show()  

3️⃣ Pyecharts交互魔法:疫情地图

🌍 动态疫情地图

python 复制代码
from pyecharts.charts import Map  
from pyecharts import options as opts  

# 模拟数据  
province_data = [("湖北", 68900), ("广东", 2450), ("北京", 1200)]  

map_chart = (  
    Map()  
    .add("累计确诊", province_data, "china")  
    .set_global_opts(  
        title_opts=opts.TitleOpts(title="全国疫情分布"),  
        visualmap_opts=opts.VisualMapOpts(  
            max_=70000,  
            is_piecewise=True,  
            range_color=["#FFE4E1", "#FF6347", "#8B0000"]  
        )  
    )  
)  
map_chart.render("covid_map.html")  

🚀 交互特性:

  • 鼠标悬停显示数值
  • 缩放查看区域细节
  • 颜色区间分段显示

4️⃣ 实战项目:疫情数据仪表盘

📦 数据准备:

python 复制代码
import pandas as pd  

# 从CSV加载数据(示例数据集)  
df = pd.read_csv("covid_data.csv")  
df['date'] = pd.to_datetime(df['date'])  

# 处理数据  
daily_new = df.groupby('date')['confirmed'].sum().reset_index()  

📊 多图表联动仪表盘:

python 复制代码
from pyecharts.charts import Line, Grid  

# 折线图  
line = (  
    Line()  
    .add_xaxis(daily_new['date'].dt.strftime('%Y-%m-%d').tolist())  
    .add_yaxis("新增确诊", daily_new['confirmed'].tolist())  
    .set_global_opts(title_opts=opts.TitleOpts(title="每日新增趋势"))  
)  

# 组合仪表盘  
dashboard = Grid()  
dashboard.add(line, grid_opts=opts.GridOpts(pos_left="5%", pos_right="5%"))  
dashboard.render("covid_dashboard.html")  

📚 知识图谱

python 复制代码
可视化设计黄金法则:
┌───────────────┬───────────────────────────┐  
|   原则        |          实施方法          |  
├───────────────┼───────────────────────────┤  
| 简洁性        | 每图传达一个核心信息         |  
| 一致性        | 统一配色与字体风格           |  
| 对比性        | 关键数据使用突出颜色         |  
| 真实性        | 避免扭曲数据的可视化技巧      |  
└───────────────┴───────────────────────────┘  

图表类型选择指南:
| 分析目标       | 推荐图表                  |  
|----------------|--------------------------|  
| 趋势分析       | 折线图/面积图             |  
| 分布分析       | 直方图/箱线图             |  
| 关联分析       | 散点图/热力图             |  
| 构成分析       | 饼图/旭日图               |  
| 地理分析       | 地图/流向图               |  

🛠️ 课后挑战

  1. 使用Seaborn绘制确诊病例与死亡数的相关性矩阵
  2. 为疫情仪表盘添加疫苗接种进度柱状图
  3. 用Plotly实现3D曲面预测模型可视化

💡 参考答案提示

python 复制代码
# Seaborn相关性热力图  
import seaborn as sns  
corr_matrix = df[['confirmed', 'deaths', 'recovered']].corr()  
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')  

🚀 下节剧透:《机器学习入门:从猜想到预测》

👉 你将解锁:

  • 监督学习与无监督学习分界
  • 特征工程的核心方法论
  • 经典算法实现(线性回归/K-Means)
  • 实战:房价预测模型构建
📢 互动任务:在评论区提交你的可视化作品截图
相关推荐
hsjiasb2 小时前
FreeRTOS学习(二十七)——任务栈与栈溢出检测
开发语言·stm32·学习·学习笔记·freertos
丰锋ff2 小时前
3.1 Qt事件之事件处理器
开发语言·qt
多弗朗皮卡丘3 小时前
C语言梦开始的地方7:函数
c语言·开发语言
月华路3 小时前
G1 垃圾回收:脏卡队列、记忆集与并发精化线程机制
java·开发语言
XLYcmy3 小时前
京东 算法实习一面 下+手撕
c++·python·llm·概率论·数据处理·训练·codebert
虎头金猫3 小时前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
从零开始学习人工智能4 小时前
WSL2部署CUDA12+cuDNN9踩坑实录:ONNX Runtime GPU推理环境搭建全流程
python
gugucoding4 小时前
47. 【Java】Java内存模型(JMM)与可见性
java·开发语言
m0_380743874 小时前
从零调用 Claude 教程
开发语言·python·node.js
起床学FPGA4 小时前
AI回答问题之后,会自动跳到最下面的问题
开发语言·javascript·ecmascript