第 45 课 · 阶段八 · 项目实战

数据可视化:matplotlib

数据不会说话,但图表会。这一课用 matplotlib 画出折线图、柱状图、饼图、散点图,并完成一张漂亮的组合图表。

第 45 课阶段八 · 项目实战难度:进阶建议时长:45 分钟关键词:matplotlib · 折线 · 柱状 · 饼图

🎯 学完本课你将掌握

  • 安装并导入 matplotlib
  • 绘制折线图、柱状图、饼图、散点图
  • 设置标题、标签、图例
  • 解决中文显示问题

一、安装

安装
1pip install matplotlib

二、第一个折线图

折线图.py
1import matplotlib.pyplot as plt
2
3x = [1, 2, 3, 4, 5]
4y = [2, 4, 3, 8, 7]
5
6plt.plot(x, y) # 画折线
7plt.title("我的第一张图")
8plt.xlabel("X轴")
9plt.ylabel("Y轴")
10plt.show()
✅ 要点
plt.show() 会弹出图片窗口;保存为文件用 plt.savefig("图.png")。

三、解决中文乱码

中文字体.py
1import matplotlib.pyplot as plt
2
3plt.rcParams["font.sans-serif"] = ["SimHei", "Microsoft YaHei"]
4plt.rcParams["axes.unicode_minus"] = False # 负号正常显示

四、柱状图

柱状图.py
1import matplotlib.pyplot as plt
2plt.rcParams["font.sans-serif"] = ["SimHei"]
3
4subjects = ["语文", "数学", "英语"]
5scores = [92, 85, 95]
6plt.bar(subjects, scores, color=["#00e5ff", "#a855f7", "#3b82f6"])
7plt.title("三科成绩")
8plt.show()

五、饼图

饼图.py
1import matplotlib.pyplot as plt
2plt.rcParams["font.sans-serif"] = ["SimHei"]
3
4labels = ["游戏", "学习", "运动", "其他"]
5sizes = [30, 40, 20, 10]
6plt.pie(sizes, labels=labels, autopct="%1.1f%%", startangle=90)
7plt.title("时间分配")
8plt.show()

六、散点图

散点图.py
1import matplotlib.pyplot as plt
2import random
3
4x = [random.randint(0, 100) for _ in range(50)]
5y = [random.randint(0, 100) for _ in range(50)]
6plt.scatter(x, y, c=y, cmap="viridis", s=40)
7plt.colorbar()
8plt.title("随机散点")
9plt.show()

七、一张图多个子图

子图.py
1import matplotlib.pyplot as plt
2plt.rcParams["font.sans-serif"] = ["SimHei"]
3
4fig, axes = plt.subplots(1, 2, figsize=(10, 4))
5axes[0].plot([1, 2, 3], [3, 1, 4], marker="o")
6axes[0].set_title("左:折线")
7axes[1].bar(["A", "B"], [5, 3])
8axes[1].set_title("右:柱状")
9plt.tight_layout()
10plt.show()

八、常见错误与解决

常见错误与解决

错误现象原因 / 解决方法
中文方块乱码设置 rcParams 字体为 SimHei 或 Microsoft YaHei。
plt.show() 不弹窗某些环境需先 plt.figure();脚本模式可改用 savefig 保存。
图例、标签重叠用 plt.tight_layout() 自动调整布局。
✍️ 小练习
用 pandas 建一个 6 个月销售数据表,画出:折线图(趋势)、柱状图(对比)、饼图(占比);保存为 sales.png。
📌 本节小结
matplotlib 四板斧:plot 折线、bar 柱状、pie 饼图、scatter 散点;中文设字体、savefig 保存、subplots 组合。数据可视化让分析结果一目了然。