【matplotlib】 图解pyplot figure、subplot、axes、axis的区别

本文详细介绍了matplotlib.pyplot中figure、subplot、axes和axis的区别。figure用于创建或调用画图板,axes指定图形区的位置和大小,subplot是图形区的高级封装,axis设置图形的视窗大小。文章强调了就近原则和缺省资源的概念,并通过实例解析了这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

码字不易,未经授权谢绝转载!

图解matplotlib.pyplot figure、subplot、axes、axis的区别


基本概念

用matplotlib.pyplot绘图需要知道以下几个概念:

画图板/画布:这是一个基础载体,类似实际的画图板,用pyplot.figure()函数创建,程序中允许创建多个画图板,具体操作的画板遵循就近原则(操作是在最近一次调用的画图板上实现),缺省条件下内部默认调用pyplot.figure(1)。

图形区/绘图区:用来绘图的实际区域,一般不直接获取,直接设定方式为pyplot.axes([x, y, w, h]),即axes函数直接确定了该区域在画图板/画布中的位置为x,y 尺寸为w,h

标签区:用来展示图形相关标签的地方,一般不直接设定(未仔细研究过),该区域根据图形区进行扩展,与该区域有关联的函数是pyplot.xlabel()、pyplot.ylabel()、pyplot.title()等

以上描述如下图所示

### Matplotlib Pyplot 功能概述 Matplotlib 是 Python 中广泛使用的绘图库,而 `pyplot` 模块提供了类似于 MATLAB 的绘图接口。通过该模块可以轻松创建各种类型的图表。 为了使用 `pyplot` 进行绘图操作,需要先导入相应的库: ```python import matplotlib.pyplot as plt ``` #### 创建简单图形 最基础的方式是直接调用 `plt.plot()` 函数来绘制线条或标记点组成的图像[^2]。 ```python # 绘制一条简单的折线图 plt.plot([1, 2, 3], [4, 5, 6]) plt.show() ``` #### 自定义图形属性 可以通过传递额外的关键字参数来自定义所生成的图形样式,比如颜色、宽度以及标签等信息[^1]。 ```python # 设置线条的颜色为红色,宽度为2,并添加标题轴名 plt.plot([0, 1, 2, 3], color="red", linewidth=2.0) plt.title('Simple Line Plot') plt.xlabel('X Axis Label') plt.ylabel('Y Axis Label') plt.grid(True) # 显示网格线 plt.show() ``` #### 复杂图形构建 对于更复杂的可视化需求,则推荐采用面向对象 (OO) 方式的编程风格。这种方式允许更加灵活地控制各个组件的行为并支持多子图布局管理等功能[^3]。 ```python fig, axs = plt.subplots(2) axs[0].bar(['A', 'B'], [7, 8]) # 条形图 axs[1].scatter([1, 2], [9, 10]) # 散点图 for ax in fig.get_axes(): ax.label_outer() # 只显示外侧刻度标签 plt.tight_layout() # 调整间距防止重叠 plt.show() ``` #### 特殊类型图表展示 除了常规的一维曲线之外,还可以利用内置函数快速生成诸如直方图、饼状图甚至是三维曲面等多种形式的数据表示方法[^4]。 ```python from mpl_toolkits.mplot3d import Axes3D xn = np.linspace(-5, 5, 100) yn = np.linspace(-5, 5, 100) zn = np.sin(np.sqrt(xn ** 2 + yn[:, None] ** 2)) X, Y = np.meshgrid(xn, yn) Z = zn.reshape(len(yn), len(xn)) fig = plt.figure(figsize=(8, 6)) ax = fig.add_subplot(projection='3d') surf = ax.plot_surface(X, Y, Z, cmap='viridis') fig.colorbar(surf, shrink=0.5, aspect=5) plt.show() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值