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)
  • 实战:房价预测模型构建
📢 互动任务:在评论区提交你的可视化作品截图
相关推荐
一直走下去-明6 分钟前
flask学习1-基础
python·学习·flask
重生之成了二本看我逆天改命走向巅峰33 分钟前
从0搭建Tomcat第二天:深入理解Servlet容器与反射机制
java·开发语言·笔记·学习·servlet·tomcat·idea
rkmhr_sef35 分钟前
Java进阶:Dubbo
java·开发语言·dubbo
数维学长98637 分钟前
【2025rust笔记】超详细,小白,rust基本语法
开发语言·笔记·rust
不止会JS40 分钟前
cursor使用经验分享(java后端服务开发向)
java·开发语言·经验分享·cursor
徐白117741 分钟前
Rust WebAssembly 入门教程
开发语言·rust·wasm
solomonzw1 小时前
C++ 学习(八)(模板,可变参数模板,模板专业化(完整模板专业化,部分模板专业化),类型 Traits,SFINAE(替换失败不是错误),)
c语言·开发语言·c++·学习
韩师学子--小倪1 小时前
ubuntu20 安装python2
python
阳洞洞1 小时前
“nullptr“ should be used to denote the null pointer
开发语言·c++
千益1 小时前
玩转python:python 异常处理从基础到实战
python