Python 编程

Matplotlib 进阶:散点、柱状与子图

10 分钟

一章图的进阶装备:第一章会用 plot 画折线、标好坐标轴,这一讲补齐数据分析最常用的另外两张图,以及「一张画布放多图」的本事。

散点图看关系:plt.scatter(x, y) 不连线只描点。想知道「学习时间和成绩有没有关系」,把全班数据画成散点——点如果往右上方飘,说明正相关。散点图是探索数据的第一张图,做研究的人拿到新数据,第一件事往往就是撒一把点看看。

柱状图看比较:plt.bar(names, values) 每个类别一根柱子——各班平均分、每月开销,高低一目了然。和折线图的分工是:折线看趋势,柱子比多少

子图一次看全:fig, axes = plt.subplots(1, 2) 把画布切成 1 行 2 列,axes[0].plot(...) 画左边,axes[1].scatter(...) 画右边。《动手学深度学习》里经常左边画训练误差、右边画测试误差,两张图对照着看——「训练误差降、测试误差升」就是过拟合的招牌信号,这个诊断方法以后天天用。

直方图看分布:plt.hist(data, bins=20) 把数据按区间分堆数数——全班成绩是集中在 80 分附近还是两极分化,一画便知。「看分布」是理解数据的基本功。

常见误区:在一张图上叠太多条线还不加 legend——图越密越要标注,否则等于没画。

练一练:画一张 1 行 2 列的子图:左边是自己一周睡眠折线,右边是全家身高柱状图,各自标好标题。

小纸条

画 1 行 2 列子图:左睡眠折线、右身高柱状

登录 后可看答案