零基础起步
假设你没画过数据图。5 个关卡从"装环境"到"做出一张能汇报的图"。
这是给谁的
第一次做数据可视化、连 Excel 透视表都不熟的同学。走完这 5 关,你就能独立完成课程作业。
- 装好 Python 环境并解决中文显示
- 能用 Excel 透视表把数据聚起来并出一张图
- 能用 matplotlib 画出折线/柱状/散点图
- 能用 ECharts 把图放进网页
- 知道一张"能汇报"的图要改哪几处
第 0 关 · 准备工具(10 分钟)
目标把接下来要用的三种工具准备好:Excel、Python、浏览器。
前提:一台装好 Windows/macOS 的电脑
前提:一台装好 Windows/macOS 的电脑
1确认 Excel / WPS 可用
🎯 课程第 6 章要用透视表与条件格式,任意版本均可。
打开 Excel → 插入 → 数据透视表(能看到这个按钮就行)👀 你应该看到
弹出"创建数据透视表"对话框
能看到对话框就说明功能可用。
⚠️ 如果报错
找不到数据透视表
→ WPS 在"数据"选项卡里;Excel 在"插入"选项卡最左侧。
2安装 Python 与绘图库
🎯 用 pip 一次装齐。
python -m pip install -U pandas matplotlib seaborn pyecharts
python -c "import matplotlib; print(matplotlib.__version__)"👀 你应该看到
3.8.0(或更高版本号)
能打印版本号就装好了。
⚠️ 如果报错
pip 不是内部命令
→ Python 安装时没勾选 Add to PATH,重装或手动加环境变量。下载很慢
→ 加国内镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas matplotlib。
✅ 过关标准Excel 能开透视表、python 能打印 matplotlib 版本。
第 1 关 · 把数据聚起来(15 分钟)
目标画图前必须先聚合——这一步不做,后面全是白费。
前提:第 0 关通过
前提:第 0 关通过
1用透视表算"各省销售额"
🎯 把省份拖到行、销售额拖到值。
插入 → 数据透视表 → 行:省份 / 值:销售额(求和)
再点"值字段设置"→ 数字格式 → 保留 0 位小数👀 你应该看到
一张"省份 / 销售额"两列的表,约 20~30 行
这就是可以拿去画图的数据。
⚠️ 如果报错
数值全变成计数
→ 拖进"值"的字段被识别成文本,检查该列是否混入了空格或单位字符。
2排序并取 Top10
🎯 排名类图表一定要先排序。
在透视表里对"销售额"列 → 排序 → 降序;再用"值筛选 → 前 10 项"👀 你应该看到
按销售额从高到低的前 10 个省份
排序后再画图,读者一眼看出排名。
✅ 过关标准能得到一张排好序的省份销售表。
第 2 关 · 画出第一张图(15 分钟)
目标用 matplotlib 画一张可直接放进作业的柱状图。
前提:第 1 关通过
前提:第 1 关通过
1解决中文显示
🎯 先写这两行,否则标题是方块。
import matplotlib
matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
matplotlib.rcParams["axes.unicode_minus"] = False👀 你应该看到
(无输出即成功)
Linux 需先安装字体;macOS 可改用 PingFang SC。
⚠️ 如果报错
还是方块
→ 字体名写错或系统没装该字体,用matplotlib.font_manager查看可用字体。
2画柱状图并保存
🎯 标题写结论,y 轴从 0 开始。
import pandas as pd, matplotlib.pyplot as plt
df = pd.read_csv("sales.csv").sort_values("sales", ascending=False).head(10)
fig, ax = plt.subplots(figsize=(8, 4), dpi=120)
ax.bar(df["province"], df["sales"], color="#4E7CFF")
ax.set_title("广东销售额居首,前 10 省占全国 68%")
ax.set_ylabel("销售额(万元)")
ax.grid(axis="y", linestyle="--", alpha=0.3); ax.set_axisbelow(True)
plt.tight_layout(); plt.savefig("top10.png", bbox_inches="tight")👀 你应该看到
生成 top10.png,10 根柱子按高到低排列
打开图片确认:标题是结论、中文正常、没有多余网格。
⚠️ 如果报错
FileNotFoundError: sales.csv
→ 当前工作目录不对,用绝对路径或在文件所在目录运行。
✅ 过关标准能产出一张标题为结论、中文正常的柱状图。
第 3 关 · 把图放进网页(15 分钟)
目标用 ECharts 做一张可以交互的图(悬停有提示、窗口自适应)。
前提:第 2 关通过
前提:第 2 关通过
1下载 echarts 并写页面
🎯 离线场景把 echarts.min.js 放本地。
<!DOCTYPE html><html><head><meta charset="utf-8">
<script src="echarts.min.js"></script>
<style>#main{width:800px;height:420px}</style></head>
<body><div id="main"></div><script>
const c = echarts.init(document.getElementById('main'));
c.setOption({
title:{text:'各省销售额'},
tooltip:{trigger:'axis'},
xAxis:{type:'category',data:['广东','江苏','山东']},
yAxis:{type:'value'},
series:[{type:'bar',data:[820,610,540]}]
});
window.addEventListener('resize',()=>c.resize());
</script></body></html>👀 你应该看到
浏览器打开后看到柱状图,鼠标悬停出现数值提示
白屏先看 F12 控制台是否有报错。
⚠️ 如果报错
白屏无图
→ ① 容器没有宽高;② echarts.min.js 路径不对;③ option 语法错误(少逗号)。
✅ 过关标准网页里能看到可交互的柱状图。
第 4 关 · 让图"能汇报"(10 分钟)
目标掌握"减法"四件事,图立刻上一个档次。
前提:第 3 关通过
前提:第 3 关通过
1四步改造
🎯 对比改造前后,体会差异。
① 标题:把"各省销售额"改成结论("广东居首,前10省占68%")
② 坐标轴:y 轴从 0 开始,刻度改成 4~6 个
③ 减法:删掉图例框线、多余网格、3D 与阴影
④ 标注:把最高点/异常点加一个文字标注👀 你应该看到
同一份数据,改造后的图一眼就能读出结论
这就是"数据墨水比"的实际应用。
✅ 过关标准能说出改造前那张图具体差在哪里。
常见报错速查
| 报错关键字 | 原因 | 怎么解决 |
|---|---|---|
| 中文显示为方块 | matplotlib 未设置中文字体 | rcParams["font.sans-serif"]=["SimHei"] |
| 负号显示为方块 | 未关闭 unicode_minus | rcParams["axes.unicode_minus"]=False |
| ModuleNotFoundError: pandas | 未安装依赖 | pip install pandas matplotlib seaborn |
| ECharts 图表空白 | 容器无宽高或脚本未加载 | 给 div 设置 width/height;检查 echarts.min.js 路径 |
| echarts is not defined | 引库失败或顺序错误 | 确保 <script src> 在初始化代码之前 |
| Excel 折线图"回勾" | x 轴被当作文本类别 | 把 x 轴类型改为日期轴并重新排序 |
| 透视表数值变成计数 | 字段被识别为文本 | 清理空格/单位字符,或改成数值格式 |
| 图片保存后被裁切 | 未使用 tight 布局 | plt.savefig(..., bbox_inches="tight") |
完成自检
- ☐ 能独立用透视表做一次分组汇总
- ☐ 能画折线、柱状、散点三种基础图
- ☐ 知道 y 轴什么时候必须从 0 开始
- ☐ 能把 ECharts 图放进网页并自适应
- ☐ 能按"准确→有效→美观"检查自己的图