核心内容摘要
模型优化十年演进
用 Python 把数据“画”成故事Matplotlib 入门全攻略❝数据不会说话那就给它一支画笔大家好呀今天咱们来聊聊Python 中最经典、最全能的数据可视化工具——Matplotlib。
别被名字吓到“Matplotlib”听起来像数学课代表其实它是个温柔又强大的绘图小能手能把枯燥的数字变成会讲故事的图表无论你是想画一条平平无奇的折线还是搞个炫酷词云展示老板最爱说的“赋能”Matplotlib 都能帮你搞定。
废话不多说直接上干货
Matplotlib 是啥为啥要学它想象一下你辛辛苦苦分析了一堆数据结果汇报时只甩出一串数字……领导“所以呢”这时候一张清晰的图胜过千言万语Matplotlib 就是那个帮你把“所以呢”变成“哇塞”的神器。
它是纯 Python 写的第三方库风格像 MATLAB但更亲民。
支持线图、散点图、饼图、直方图、箱线图……甚至雷达图、流向图图形质量高到可以直接拿去发论文 or 做 PPT❝ 小贴士使用前记得先装好numpy它是 Matplotlib 的“左膀右臂”。
import matplotlib.pyplot as plt import numpy as np️
画布与子图你的“画纸”怎么安排就像画画前要选画布大小Matplotlib 也允许你自定义画布plt.figure(figsize(9,
) # 9英寸宽6英寸高想一次画多个图用子图subplot比如你想对比“夏天 vs 冬天”的气温变化fig, axes plt.subplots(1,
# 1行2列 axes[0].plot([30, 35, 33]) # 夏天 axes[1].plot([5, 2, -1]) # 冬天 plt.show()❝ 生活类比这就像你在手机相册里拼图——左边是你吃火锅的照片右边是你滑雪的照片一张图讲两个故事✍️
给图表“化妆”标题、坐标轴、图例画完图别急着发朋友圈先加点“妆容”plt.plot([1, 2, 3], [1, 4, 9]) plt.title(我的收入增长曲线梦想版) plt.xlabel(月份) plt.ylabel(存款万元) plt.legend([真实情况]) # 记住legend 要在 plot 之后 plt.show()❝⚠️ 注意图例legend必须在画图之后调用否则它会一脸懵“我该标谁”
线条样式大赏颜色、线型、标记点Matplotlib 的线条可不止“黑线”一种你可以换颜色b蓝、r红、g绿……甚至orange换线型-实线、--虚线、-.点划线加标记o圆圈、*星星、^三角形x np.linspace(0, 10,
plt.plot(x, np.sin(x), colorpurple, linestyle--, marker*, markersize
plt.show()❝ 小彩蛋alpha
5可以让线条半透明适合叠图时看清重叠部分
常见图表全家福 折线图Line Chart最适合看趋势比如股价、温度、你的体重希望是下降的。
days [Mon, Tue, Wed, Thu, Fri] coffee [2, 3, 5, 4, 6] plt.plot(days, coffee, marker☕) plt.title(本周咖啡摄入量续命指数) 散点图Scatter Plot看两个变量有没有“暧昧关系”。
x np.random.randn(
y 2 * x np.random.randn(
plt.scatter(x, y, cred, alpha
0.
plt.title(身高 vs 篮球命中率) 直方图Histogram看数据分布比如全班考试成绩。
scores np.random.normal(75, 10,
# 平均75标准差10 plt.hist(scores, bins30, colorskyblue, edgecolorblack) plt.title(期末考试成绩分布) 饼图Pie Chart展示占比比如你的时间分配labels [刷手机, 摸鱼, 学习, 睡觉] sizes [40, 30, 10, 20] explode (
1, 0, 0,
# 让“刷手机”突出一点心虚了 plt.pie(sizes, labelslabels, explodeexplode, autopct%
1f%%) plt.title(我的一天真实版) 箱线图Boxplot一眼看出数据的“五脏六腑”最小值、Q
中位数、Q
最大值。
data [np.random.normal(0, std,
for std in range(1,
] plt.boxplot(data, labels[A组, B组, C组]) plt.title(三组实验数据对比)
高级技巧填充、注释、中文显示 曲线下填充比如突出“盈利区间”x np.linspace(0, 5,
y np.sin(x) plt.plot(x, y) plt.fill_between(x, 0, y, where(y
, colorgreen, alpha
0.
plt.title(正收益区域绿色部分) 添加注释用箭头指向关键点plt.plot([1, 2, 3], [1, 4, 2]) plt.annotate(峰值, xy(2,
, xytext(
5,
, arrowpropsdict(facecolorred, shrink
0.
) 显示中文默认字体不支持中文会显示方框 ❌。
解决方法plt.rcParams[font.sans-serif] [SimHei] # 用黑体 plt.rcParams[axes.unicode_minus] False # 正常显示负号现在你就可以写《北京 vs 上海房价对比》这种标题了