查看全课大纲(第 67 / 101 节)
- 1.数据分析基本概念
- 2.学习数据分析的一般路线
- 3.数据分析的流程
- 4.数据类型
- 5.环境部署(1)
- 6.环境部署(2)
- 7.课程介绍
- 8.TXT文件操作
- 9.JSON文件操作
- 10.CSV文件操作
- 11.Excel文件操作
- 12.数据库及SQL常用语法
- 13.数据库基本操作
- 14.数据库多表连接
- 15.实战:欧洲职业足球数据库分析
- 16.爬虫简介
- 17.URL管理模块
- 18.网页下载模块
- 19.网页解析模块(1)
- 20.网页解析模块(2)
- 21.Scrapy简介
- 22.Scrapy使用步骤(1)
- 23.Scrapy使用步骤(2)
- 24.Scrapy使用步骤(3)
- 25.Scrapy使用步骤(4)
- 26.实战:获取国内城市空气质量指数数据
- 27.NumPy和SciPy介绍
- 28.多维数组
- 29.多维数组操作
- 30.NumPy的常用方法
- 31.向量化介绍
- 32.向量化及通用函数
- 33.实战:2016美国大选分析
- 34.数据结构-Series
- 35.数据结构-DataFrame
- 36.数据结构-Index
- 37.Series的索引操作
- 38.DataFrame的索引操作
- 39.索引操作总结
- 40.运算与对齐
- 41.函数应用操作(1) -- map
- 42.函数应用操作 (2) -- apply applymap
- 43.文件读写操作
- 44.排序操作
- 45.数据清洗--处理缺失数据
- 46.数据清洗--处理重复数据
- 47.数据清洗--替换数据
- 48.常用统计方法(1) -- describe quantile
- 49.常用统计方法(2) -- sum mean median count
- 50.常用统计方法(3) -- max min idxmax idxmin
- 51.常用统计方法(4) -- mad var std cumsum
- 52.实战:全球食品数据分析
- 53.层级索引
- 54.分组与聚合介绍
- 55.分组操作(1) -- GroupBy对象及常用聚合操作
- 56.分组操作(2) -- 自定义分组及聚合操作
- 57.透视表介绍
- 58.透视表操作
- 59.数据规整(1) -- 数据合并concat
- 60.数据规整(2) -- 数据连接merge
- 61.数据重构(3) -- 数据重构stack unstack
- 62.实战:互联网电影资料库分析
- 63.探索性数据分析EDA介绍
- 64.EDA的目的
- 65.EDA常用工具
- 66.Matplotlib绘图基本介绍
- 67.Matplotlib画布
- 68.散点图和柱状图的绘制
- 69.直方图的绘制
- 70.矩阵绘图
- 71.子图的使用
- 72.Matplotlib颜色、标记、线型
- 73.Matplotlib坐标刻度、标签、图例、标题
- 74.Seaborn介绍
- 75.数据集分布可视化(1) -- 单变量分布、双变量分布
- 76.数据集分布可视化(2) -- 变量关系可视化
- 77.类别数据可视化 -- 类别散布图、类别内数据分布、类别内统计图
- 78.交互式数据可视化工具Bokeh介绍
- 79.Bokeh绘制散点图、柱状图、盒子图、弦图
- 80.Bokeh绘制常用图形元素
- 81.3D绘图 -- mplot3d
- 82.3D曲线可视化
- 83.3D散点图可视化
- 84.3D柱状图可视化
- 85.Pandas绘图
- 86.实战:Lending Club借贷数据探索性分析及可视化
- 87.机器学习介绍及应用场景
- 88.机器学习建模介绍 (1) -- 分类
- 89.机器学习建模介绍 (2) -- 回归
- 90.机器学习建模介绍 (3) -- 聚类
- 91.机器学习分类
- 92.机器学习工具scikit-learn
- 93.使用scikit-learn的流程
- 94.数据集准备及划分
- 95.模型选择
- 96.数据预处理及特征工程
- 97.过拟合与欠拟合
- 98.模型调参介绍
- 99.模型调参方法
- 100.模型测试及评价
- 101.实战:通过移动设备行为数据预测性别和年龄
Matplotlib画布
约 7 分钟
小象实战讲义 · Python数据分析实战
在上一节中,我们了解了Matplotlib绘图的基本流程和元素。从本节开始,我们将正式学习如何使用Matplotlib进行绘图。一切绘图都始于一个承载图像的“画布”(Figure),这是Matplotlib最基础的元素。本节将带你掌握画布的创建、大小控制以及在Jupyter Notebook中的使用注意事项。
💡 核心导读
- Figure对象:Matplotlib的所有图像都位于Figure对象中,它是绘图的顶层容器。
- 画布创建:使用
plt.figure()显式创建画布,养成良好编程习惯。 - 画布大小:通过
figsize参数(单位:英寸)控制画布尺寸。 - 绘图三步法:创建画布 → 准备/生成数据 → 调用绘图函数并显示。
- Jupyter使用注意:在Notebook中,创建画布和后续绘图代码应置于同一个Cell中,或通过变量传递Figure对象。
1. 理解Figure:绘图的画布
在Matplotlib中,Figure(画布) 是所有绘图元素的顶层容器。你可以将其想象为一张空白的画纸,后续的坐标轴、线条、点等都将绘制在这张“画纸”上。
创建画布最直接的方式是调用plt.figure()函数。
import matplotlib.pyplot as plt
# 创建一张画布
plt.figure()运行上述代码,虽然你看不到任何图形(因为没有绘制内容),但一个Figure对象已经在后台被创建了。
一个重要的细节:即使你不显式调用plt.figure(),当你第一次调用如plt.plot()这样的绘图函数时,Matplotlib也会自动为你创建一个默认的画布。这是一种便利机制。然而,我们强烈建议你养成显式创建画布的习惯。这样做的好处是代码意图更清晰,并且可以方便地在创建时设置画布属性,例如大小。
2. 基础绘图三步走
有了画布,我们就可以进行绘图了。一个最简单的绘图流程可以分为三步:
- 创建画布 (
plt.figure()) - 准备/生成数据
- 绘图并显示 (调用绘图函数,如
plt.plot(),最后用plt.show()显示)
让我们通过一个具体例子来实践这个流程。
import matplotlib.pyplot as plt
# 第一步:创建画布
plt.figure()
# 第二步:准备数据
data = [2, 3, 6, 7, 11] # 这代表Y轴的值
# 第三步:绘图并显示
plt.plot(data) # 绘制折线图
plt.show()执行这段代码,你会看到一条折线。这里有一个关键点需要理解:当我们只传入一个列表(如[2, 3, 6, 7, 11])给plt.plot()时,Matplotlib会将这些值视为Y轴的坐标。X轴的坐标则被自动设置为从0开始的整数序列 [0, 1, 2, 3, 4]。
因此,这条折线实际上连接了五个点:(0,2), (1,3), (2,6), (3,7), (4,11)。由于这些点并非严格在一条直线上,所以我们看到的是一条有起伏的折线。如果数据是[2, 4, 6, 8, 10],那么绘制的就是一条斜率为2的直线。
3. 控制画布大小
默认创建的画布大小是固定的。但在很多场景下,我们需要调整画布的尺寸以适应不同的展示需求,比如创建一个细长型的图表。
这可以通过plt.figure()的figsize参数来实现。figsize接受一个元组(width, height),单位是英寸(inch)(1英寸 = 2.54厘米)。
下面的例子将创建一个宽度为20英寸、高度为5英寸的“扁长”画布,并在上面绘制100个随机数据点。
import matplotlib.pyplot as plt
import numpy as np
# 设置随机种子,确保示例可复现(注意:仅用于演示,印刷时不依赖随机输出)
np.random.seed(42)
# 创建自定义大小的画布:宽度20英寸,高度5英寸
plt.figure(figsize=(20, 5))
# 生成100个随机数据点
random_data = np.random.randn(100)
# 绘制折线图
plt.plot(random_data)
plt.show()运行后,你可以明显感受到画布形状的变化。通过调整figsize的两个数值,你可以轻松创建出正方形、长方形等各种比例的画布。
4. 在Jupyter Notebook中的注意事项
在Jupyter Notebook(或JupyterLab)中编写和运行Matplotlib代码时,有一个特殊的注意事项:创建画布的代码和后续在该画布上绘图的代码,必须放在同一个Cell中执行。
这是因为Jupyter中所有Cell共享同一个Python内核命名空间,代码并非”互不记忆”;真正的原因在渲染侧:Notebook 使用 inline 后端时,每个Cell执行结束会把当前图形渲染输出并”收走”它。因此若把两段代码拆到两个Cell:
- Cell 1:
plt.figure(figsize=(20, 5)) - Cell 2:
plt.plot([1,2,3]); plt.show()
那么Cell 1 执行结束时,inline 后端就会把这张画布渲染输出并关闭;等Cell 2 执行时,当前已经没有活动的画布,plt.plot 会自动创建一张新的默认大小的画布并在上面绘图。这就导致你设置的figsize=(20,5)没有生效。
正确的做法有两种:
- (推荐)将相关代码放在同一个Cell。
- 将
plt.figure()返回的Figure对象赋值给一个变量(如fig = plt.figure(...)),然后在后续的Cell中将这个变量fig传递给特定的绘图函数或方法(这通常在使用面向对象接口时更常见)。对于初学者使用plt.plot()这种函数式接口,第一种方法更简单直接。
为了让你更清晰地看到问题现象,请看下面的对比演示:
# 演示:在Notebook中分开Cell执行的效果(模拟)
# 假设下面两个代码块分别在两个独立的Cell中
# Cell 1:仅创建画布
import matplotlib.pyplot as plt
plt.figure(figsize=(20, 5))
print("Cell 1执行完毕:创建了一个 figsize=(20,5) 的画布。")Cell 1执行完毕:创建了一个 figsize=(20,5) 的画布。# Cell 2:尝试在“另一个Cell”中绘图
import matplotlib.pyplot as plt
import numpy as np
# 由于与Cell 1不在同一上下文,这里会使用默认画布
np.random.seed(42)
data = np.random.randn(100)
plt.plot(data)
plt.show()
print("Cell 2执行完毕:在默认大小的画布上完成了绘图。")Cell 2执行完毕:在默认大小的画布上完成了绘图。从输出提示可以看出,虽然我们在第一个Cell创建了特定大小的画布,但在第二个Cell绘图时,这个设置并没有被沿用。在实际的Notebook界面中,第二个Cell显示的图形将是默认尺寸,而非我们设定的(20, 5)。
📝 动手练一练
- 概念辨析:如果不调用
plt.figure()直接使用plt.plot()绘图,会发生什么?Matplotlib是如何处理的?显式创建画布有什么好处?
👉 点击查看参考答案
如果不显式调用plt.figure(),当第一次调用plt.plot()等绘图函数时,Matplotlib会自动在后台创建一个默认大小和属性的Figure对象(画布)。这是一种“惰性创建”的便利机制。
显式创建画布(plt.figure())的好处包括:
- 代码意图清晰:明确表明了“这里开始准备一张新图”。
- 便于设置属性:可以在创建时一次性设置画布大小(
figsize)、DPI(分辨率)、背景色等属性。 - 更好的控制:在复杂的多图绘制场景中,显式创建和管理多个Figure对象是必须的。 因此,养成显式创建画布的习惯是良好的编程实践。
- 动手实践:请修改下面代码中的
figsize参数,创建一个高度大于宽度的“瘦高型”画布(例如宽5英寸,高10英寸),并绘制数据[10, 8, 6, 4, 2, 0]的折线图。观察画布形状的变化。
👉 点击查看参考答案
import matplotlib.pyplot as plt
# 创建瘦高型画布:宽度5英寸,高度10英寸
plt.figure(figsize=(5, 10))
# 准备数据并绘图
data = [10, 8, 6, 4, 2, 0]
plt.plot(data)
plt.show()运行代码后,你将看到一个高度约为宽度两倍的竖直矩形画布,折线图绘制在其中。通过调整figsize的两个数字,你可以控制画布呈现任何你想要的矩形比例。
本章小结
本节我们深入学习了Matplotlib绘图的基础——Figure(画布)。画布是所有可视化元素的容器,理解它是掌握Matplotlib的第一步。
📋 行动清单
学完本节,你可以立即:
- 在任何绘图开始前,习惯性地使用
plt.figure()显式创建画布。 - 根据图表展示的需要,使用
figsize参数(单位:英寸)调整画布的宽度和高度。 - 在Jupyter Notebook中编码时,确保将创建画布和后续绘图命令放在同一个Cell中执行。
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。
- 下载本节课件:Matplotlib画布PDF · 182KB
- 下载全套课件打包(第1-5章)ZIP · 12.8MB
- 下载全套课件打包(第6-8章)ZIP · 15MB
- 下载实战数据集:AppleStore 应用商城分析ZIP · 329KB
- 下载实战数据集:女性服装电商分析ZIP · 2.8MB
- 下载Python 数据分析环境搭建指南PDF · 2MB
- 下载Scrapy 安装教程PDF · 12.7MB
- 下载附加实战项目:AppleStore 应用商城数据分析ZIP · 0.3MB · ipynb + CSV 数据
- 下载附加实战项目:银行电话营销数据分析ZIP · 0.4MB · ipynb + CSV 数据
- 下载附加实战项目:女性服装电商评论数据分析ZIP · 2.7MB · ipynb + CSV 数据
- 下载附加实战项目:美国化学学会杂志数据分析ZIP · 34.2MB · ipynb + SQLite 数据库