查看全课大纲(第 40 / 51 节)
- 1.Python 是什么?为什么值得学?
- 2.如何为 Python 编程准备一个“全家桶”环境?
- 3.Python 有哪几种执行方法?
- 4.行与缩进到底有什么用?
- 5.注释有什么用,怎么写?
- 6.变量:如何给数据起个好名字?
- 7.运算符的优先级和常见坑点是什么?
- 8.Python 中,数字和布尔值究竟有哪几种?
- 9.输入函数 `input()` 和文件读取 `open()` 怎么用?
- 10.如何将程序的结果展示给用户或保存下来?
- 11.CSV 文件怎么读怎么写才方便?
- 12.列表是什么,如何创建和访问它?
- 13.列表的修改操作,有哪些方法?
- 14.列表切片为什么能取到部分元素?排序和查找又该怎么用?
- 15.判断语句:如何让程序根据条件做不同的事?
- 16.for 循环如何遍历序列中的元素?
- 17.while 循环什么时候才会停?
- 18.while 循环的结束条件,你写对了吗?
- 19.循环中途想提前结束,怎么办?
- 20.`break` 和 `continue` 到底有什么区别?
- 21.列表推导式如何让代码更简洁高效?
- 22.字符串怎么定义、拼接和操作?
- 23.元组:为什么定义单个元素时要加逗号?
- 24.集合(set)怎么用?如何快速去重和做集合运算?
- 25.字典是什么,为什么比列表更方便?
- 26.字典的增删改查与遍历,如何避免 KeyError?
- 27.函数里的变量,为什么有的能用有的不能用?
- 28.在函数内部修改全局变量,为什么有时不生效?
- 29.函数里能修改全局变量吗?返回值怎么用?
- 30.匿名函数:如何用 lambda 快速定义简单函数?
- 31.面向对象编程是什么,为什么需要它?
- 32.类中的方法和属性到底怎么定义和使用?
- 33.如何控制对对象内部属性和方法的访问?
- 34.异常发生时,程序会怎样继续执行?
- 35.如何组织代码:包和模块
- 36.`if __name__ == '__main__'` 到底有什么用?
- 37.如何用 IDE 的 Debug 功能排查程序错误?
- 38.Matplotlib 绘图的第一步该做什么?
- 39.Figure 是什么,如何设置图形尺寸?
- 40.如何自定义 Matplotlib 的坐标轴?
- 41.如何为图表添加图例,让不同曲线一目了然?
- 42.饼图怎么画才能直观展示数据占比?
- 43.如何用 Matplotlib 绘制散点图?
- 44.柱状图怎么画?
- 45.如何使用 Matplotlib 绘制等高线图?
- 46.如何在 Matplotlib 中绘制子图?
- 47.zip 函数如何把多个列表“打包”在一起?
- 48.如何给可迭代对象加上索引?
- 49.random 模块如何生成随机数?
- 50.math 模块怎么用?
- 51.Counter 如何快速统计元素出现次数?
如何自定义 Matplotlib 的坐标轴?
约 6 分钟
小象实战讲义 · Python 编程从入门到实践
在上一节,我们学习了如何使用 Matplotlib 创建一张基本的图表。一张完整的图表除了数据点构成的图形,还离不开清晰的坐标轴。坐标轴决定了我们观察数据的“窗口”范围,也帮助我们理解数据的含义。本节我们将学习如何自定义坐标轴,包括设置其显示范围和添加标签,让你的图表信息更完整、更专业。
💡 核心导读
- 设置坐标轴范围:使用
plt.xlim()和plt.ylim()函数,可以限定 X 轴和 Y 轴的显示区间,聚焦于关键数据区域。 - 添加坐标轴标签:使用
plt.xlabel()和plt.ylabel()函数,为坐标轴添加文字说明,明确数据的物理或数学意义。 - 自定义线条样式:在绘制多条曲线时,可以通过
color和linestyle等参数区分它们,使图表更易读。 - 学会查阅文档:Matplotlib 提供了丰富的自定义选项,掌握查阅官方文档的方法,是解决个性化绘图需求的关键技能。
设置坐标轴的范围
当我们绘制数据时,Matplotlib 会自动根据数据点的最小值和最大值来确定坐标轴的显示范围。但有时自动生成的范围可能并不理想,比如图形边缘过于拥挤,或者我们只想展示数据的某一部分。这时,就需要手动设置坐标轴的范围。
plt.xlim() 和 plt.ylim() 函数就是用来做这个的。它们都接受一个包含两个数字的元组 (最小值, 最大值) 作为参数。
import matplotlib
matplotlib.use("Agg") # 无图形界面后端
import matplotlib.pyplot as plt
import numpy as np
# 生成示例数据
x = np.linspace(-3, 3, 50) # 在-3到3之间生成50个等距点
y1 = 2 * x + 1 # 直线 y = 2x + 1
y2 = x ** 2 # 抛物线 y = x^2
plt.figure(figsize=(5, 5))
# 设置坐标轴范围:X轴显示-1到2,Y轴显示-2到3
plt.xlim((-1, 2))
plt.ylim((-2, 3))
# 绘制图形
plt.plot(x, y2)
plt.plot(x, y1, color='red', linestyle='--') # 红色虚线
plt.close() # 关闭图形,释放资源执行后,X 轴只显示 -1 到 2、Y 轴只显示 -2 到 3 的区间。通过设置 plt.xlim((-1, 2)),我们告诉 Matplotlib 只显示 X 轴从 -1 到 2 的区间;原始数据中 -3 到 -1 以及 2 到 3 的部分虽然被计算和绘制了,但在图表视窗中不可见。plt.ylim() 同理。
为坐标轴添加标签
没有标签的坐标轴就像没有刻度的尺子,我们不知道它代表什么。plt.xlabel() 和 plt.ylabel() 函数用于为 X 轴和 Y 轴添加文本标签。
import matplotlib
matplotlib.use("Agg") # 无图形界面后端
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure(figsize=(5, 5))
# 设置坐标轴范围
plt.xlim((-1, 2))
plt.ylim((-2, 3))
# 设置坐标轴标签
plt.xlabel('This is x') # X轴标签
plt.ylabel('This is y') # Y轴标签
plt.plot(x, y2)
plt.plot(x, y1, color='red', linestyle='--') # 红色虚线
plt.close()执行后,图表 X 轴下方会显示 “This is x”,Y 轴左侧会显示 “This is y”;图中包含一条蓝色实线(y = x²)和一条红色虚线(y = 2x + 1)。标签文本是字符串,你可以将其替换为任何有意义的描述,例如“时间 (秒)”、“温度 (°C)”、“销售额 (万元)”等。
自定义绘图线条的样式
在一张图中绘制多条曲线时,为了区分它们,我们经常需要改变线条的颜色和样式。在 plt.plot() 函数中,通过 color 参数可以指定颜色,通过 linestyle 参数可以指定线型。
import matplotlib
matplotlib.use("Agg") # 无图形界面后端
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure(figsize=(5, 5))
# 第一条曲线使用默认的蓝色实线
plt.plot(x, y2)
# 第二条曲线使用红色虚线
plt.plot(x, y1, color='red', linestyle='--')
plt.close()执行后,图表中包含两条曲线:一条蓝色的实线(y=x²),一条红色的虚线(y=2x+1)。color 参数可以接受颜色名称的字符串(如 'red', 'blue', 'green')。linestyle 参数常用的值有:
'-'或'solid': 实线(默认)'--'或'dashed': 虚线':'或'dotted': 点线'-.'或'dashdot': 点划线
如何查找更多自定义选项?
Matplotlib 的功能非常强大,plt.plot() 等函数有数十个可选参数。实际使用时,可以通过搜索引擎查找官方文档来了解这些参数。
核心方法:当你需要实现某个特定效果(比如“红色的虚线”)但不知道参数怎么写时,最可靠的方法是查阅官方文档。
- 搜索关键词如 “matplotlib plot”。
- 在结果中找到并打开官方文档页面(通常是
matplotlib.org下的链接)。 - 在文档中查找函数说明,里面会列出所有参数及其可选值。
例如,在 plt.plot() 的文档中,你可以找到 color 支持的所有颜色名称和 linestyle 支持的所有线型。坚持阅读英文官方文档,是系统掌握一个库功能的最佳途径。当然,你也可以搜索相关的中文教程和示例作为辅助。
📝 动手练一练
- 修改第一个示例代码,将 X 轴的显示范围改为
(0, 1),Y 轴范围改为(0, 5),观察图表发生了怎样的变化。 - 把第二个示例中第二条曲线的线型改为点线(
':'),观察它和虚线的区别。
👉 点击查看参考答案
思路:
- 直接修改
plt.xlim()和plt.ylim()的参数即可改变显示范围,图表将只显示新范围内的图形部分。 - 把
linestyle参数由'--'改为':'即可得到点线。
参考代码片段:
import matplotlib
matplotlib.use("Agg") # 无图形界面后端
import matplotlib.pyplot as plt
import numpy as np
# 练习1:修改坐标轴范围
x = np.linspace(-3, 3, 50)
y = x ** 2
plt.figure(figsize=(5,5))
plt.xlim((0, 1))
plt.ylim((0, 5))
plt.plot(x, y)
plt.close()
# 练习2:修改线型
y1 = 2 * x + 1
y2 = x ** 2
plt.figure(figsize=(5,5))
plt.plot(x, y2)
plt.plot(x, y1, color='red', linestyle=':') # 改为点线
plt.close()常见错误
| 错误写法 | 现象或报错 | 原因 | 正确写法 |
|---|---|---|---|
plt.xlabel('X轴', 'Y轴') | AttributeError: 'str' object has no attribute 'items' | xlabel() 的第二个位置参数是字体属性字典(fontdict),不能用来传第二个标签。X、Y 轴标签必须分别设置。 | plt.xlabel('X轴')plt.ylabel('Y轴') |
plt.plot(x, y, color='read') | ValueError: 'read' is not a valid value for color(后面还列出一串支持的颜色写法) | 颜色名称拼写错误。Matplotlib 无法识别 'read',不会自动回退到默认颜色,而是直接报错。 | plt.plot(x, y, color='red') |
同一张图上重复执行 plt.plot() 前不新建 Figure | 新的曲线会和旧曲线叠加在同一张图上,而不是出现一张新图。 | Matplotlib 的绘图状态是持续的。如果没有调用 plt.figure(),后续绘图命令会继续修改当前活动的 Figure。 | 在绘制新图前使用 plt.figure() 创建新图形,或使用 plt.close() 关闭当前图形。 |
小结
- 控制视图范围:使用
plt.xlim((min, max))和plt.ylim((min, max))可以精确控制图表中 X 轴和 Y 轴的显示区间,帮助聚焦于关键数据。 - 明确坐标含义:使用
plt.xlabel('文本')和plt.ylabel('文本')为坐标轴添加描述性标签,这是制作专业图表的基本步骤。 - 区分多条曲线:通过
plt.plot()的color(颜色)和linestyle(线型)参数,可以自定义每条曲线的外观,使图表更清晰易读。 - 善用官方文档:Matplotlib 提供了极其丰富的自定义选项。遇到不确定的参数或想实现特定效果时,查阅官方文档是最直接、最准确的学习方式。
📋 行动清单
- 运行一遍本节的所有示例代码,确保理解
xlim、ylim、xlabel、ylabel的效果。 - 尝试将“动手练一练”中的线型
':'改为'-.',观察点划线是如何显示的。 - 搜索 “matplotlib color names”,找一两个喜欢的颜色名称,在下一次绘图中使用它。
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。
- 下载第5章代码包:坐标轴(含1 个 Notebook)ZIP · 675B