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 知识体系总览

为了让你更清楚地理解本章的知识结构,我画了一张图:

可视化入门知识体系 Matplotlib 折线图 数据准备 plt.plot() 核心 图表美化 日期 & 用电量 列表 / DataFrame 标题 / 轴标签 网格线 / 标记点 线条样式 / 颜色 中文显示配置

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