4、可视化入门:用Matplotlib绘制日用电量折线图,直观感受用电波动
数据拿到手了,也清洗干净了。接下来做什么?
我个人习惯,第一步不是跑模型,也不是算统计量。而是——画图。
为什么?因为数字是冰冷的,但图表会说话。你盯着几百行用电数据看半天,可能啥也看不出来。但一张折线图甩出来,哪天用电多、哪天用电少,一目了然。说白了,可视化是数据分析的“眼睛”。
本章核心目标:用 Matplotlib 画出你家一周的日用电量折线图,学会看图说话。
4.1 为什么要先画图?
我记得刚入行那会儿,带我的老工程师说过一句话:“先看图,再说话。” 这句话我记到现在。
你想想看,如果给你一堆数字:
- 周一:12.3 kWh
- 周二:11.8 kWh
- 周三:15.6 kWh
- 周四:9.2 kWh
- 周五:14.1 kWh
- 周六:18.7 kWh
- 周日:20.3 kWh
你能一眼看出规律吗?可能有点费劲。但画成折线图,周末用电飙升的趋势,一眼就能抓住。
这就是可视化的力量——把抽象的数据变成直观的图形。对于家庭能源管理来说,折线图能帮你快速发现:
- 哪几天用电异常高(可能空调开太猛了)
- 工作日和周末的用电差异
- 有没有明显的周期性规律
小提示: 我在项目中遇到过,有些同学一上来就搞复杂模型,结果数据本身就有问题,白忙活一场。先画图,能帮你提前发现数据中的“坑”。
4.2 Matplotlib 快速上手
Python 里画图的库很多,但 Matplotlib 是“老大哥”。它功能强大,而且几乎所有数据分析库都兼容它。
安装很简单,如果你用的是 Anaconda,它已经内置了。如果没有,终端里敲一行:
pip install matplotlib
然后导入它。我个人习惯给它起个短别名:
import matplotlib.pyplot as plt
嗯,这里要注意:pyplot 是 Matplotlib 里的一个子模块,它提供了类似 MATLAB 的绘图接口。我们日常画图,基本都用它。
4.3 画第一张折线图
好,咱们直接上手。假设我们已经有了一个星期的用电数据,存在两个列表里:
# 日期标签
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
# 对应的日用电量(单位:kWh)
usage = [12.3, 11.8, 15.6, 9.2, 14.1, 18.7, 20.3]
画折线图,核心就一个函数:plt.plot()
plt.plot(days, usage)
plt.show()
就这么两行,图就出来了。但说实话,这图太“素”了——没有标题,没有标签,别人看了也不知道在表达什么。
所以,我建议你养成好习惯,画图时至少加上标题和轴标签:
plt.plot(days, usage)
# 添加标题和标签
plt.title('家庭日用电量折线图')
plt.xlabel('星期')
plt.ylabel('用电量 (kWh)')
plt.show()
你看,这样是不是清楚多了?
核心口诀: 画图三步走——数据、标题、标签。缺一不可。
4.4 让图表更“专业”一点
基础图有了,但看起来还是有点单调。我在做项目时,通常会再加几样东西:
- 网格线:方便读数
- 标记点:突出每个数据点的位置
- 线条样式:让图更美观
来看看怎么加:
plt.plot(days, usage, marker='o', linestyle='-', color='b', linewidth=2)
plt.title('家庭日用电量折线图')
plt.xlabel('星期')
plt.ylabel('用电量 (kWh)')
# 添加网格线
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()
解释一下参数:
marker='o':每个数据点用圆圈标记linestyle='-':实线连接color='b':蓝色线条linewidth=2:线条粗细plt.grid(True):打开网格,alpha控制透明度
嗯,这里有个小技巧:网格线的透明度我一般设 0.3~0.6,太深了会抢了数据本身的风头。
4.5 避坑指南:中文显示问题
我曾经踩过的坑: 第一次用 Matplotlib 画中文标题,结果出来全是方框。当时我还以为是代码写错了,折腾了半天才发现是字体问题。
Matplotlib 默认字体不支持中文。解决办法很简单,指定一个支持中文的字体就行:
# 在绘图前加上这两行
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定黑体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
如果你用的是 Mac,可以把 SimHei 换成 Arial Unicode MS 或者 PingFang SC。Linux 用户可以用 WenQuanYi Micro Hei。
加了这两行,中文就能正常显示了。记住,这是每次画图前都要做的“准备工作”。
4.6 知识体系总览
为了让你更清楚地理解本章的知识结构,我画了一张图:
4.7 完整代码示例
最后,给你一个可以直接运行的完整代码。把下面这段复制到你的 Python 环境里试试:
import matplotlib.pyplot as plt
# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 数据
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
usage = [12.3, 11.8, 15.6, 9.2, 14.1, 18.7, 20.3]
# 绘图
plt.plot(days, usage, marker='o', linestyle='-', color='#2ecc71', linewidth=2, markersize=8)
# 装饰
plt.title('家庭日用电量折线图', fontsize=16, fontweight='bold')
plt.xlabel('星期', fontsize=12)
plt.ylabel('用电量 (kWh)', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.4)
# 显示
plt.tight_layout()
plt.show()
运行之后,你会看到一张漂亮的折线图。周末用电量明显高于工作日,对吧?这就是可视化带给你的“第一印象”。
我的习惯: 每次画完图,我都会盯着看 10 秒钟。问自己三个问题——趋势是什么?有没有异常点?这个图讲了一个什么故事?
好了,这一章就到这里。你学会了用 Matplotlib 画折线图,也知道了怎么让图表更专业。下一章,我们会把这些技巧用在真实的电费账单数据上,画出更有价值的图表。
公众号:蓝海资料掘金营,微信deep3321