plt、fig、axes、axis的含义

文章详细介绍了在Matplotlib中figure和axes的概念,plt.plot()与ax.plot()的区别,以及如何使用subplots创建和控制多个子图。通过示例代码展示了如何设置图形细节,如标题、坐标轴标签和网格线。面向对象的方法使代码更易于理解和管理。

plt

import matplotlib.pyplot as plt

figure,axes与axis

在这里插入图片描述

      如果将Matplotlib绘图和我们平常画画相类比,可以把Figure想象成一张纸(一般被称之为画布),Axes代表的则是纸中的一片区域(当然可以有多个区域,这是后续要说到的subplots),下面是一张更形象一点的图:

在这里插入图片描述

 plt.plot()和ax.plot()有何区别,下面列出了两种用Matplotlib绘制图表的方式。

plt.figure()
plt.plot([1, 2, 3], [4, 5, 6])
plt.show()

# 第二种方式
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])
plt.show()

在这里插入图片描述在这里插入图片描述

可以看出,两种方式产生的结果完全一样。从第一种方式的代码来看,先生成了一个Figure画布,然后在这个画布上隐式生成一个画图区域进行画图。
第二种方式同时生成了Figure和axes两个对象,然后用ax对象在其区域内进行绘图

如果从面向对象编程(对理解Matplotlib绘图很重要)的角度来看,显然第二种方式更加易于解释,生成的fig和ax分别对画布Figure和绘图区域Axes进行控制,第一种方式反而显得不是很直观,如果涉及到子图零部件的设置,第二种方式显然会更易于使用。

 subplot绘制多个子图

首先要有一个画布Figure,其次,需要有两个区域Axes(等价于两个子图subplot)来画图

# 生成画布和axes对象
# nrows=1和ncols=2分别代表1行和2列
fig,ax = plt.subplots(nrows=1,ncols=2)

 因为这里有两个画图区域,所以ax对应的是一个列表,存储了两个Axes对象。

然后对两个对象进行绘制

ax[0].plot([1,2,3],[4,5,6])
ax[1].scatter([1,2,3],[4,5,6])

在这里插入图片描述

可以看出,一个Axes对象对应了一个subplot子图,这些个子图都是画在同一个画布Figure之上。

 应用

具体绘制时:
1.首先创建画布

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(14,7))

在这里插入图片描述

2.我们在这个axes上画数据,因此就用ax.plot()来画

ax.plot([1,2,3],[4,5,6])

 在这里插入图片描述

3.进行细节处理
设置xy轴标题,以及这个ax区域的标题

ax.set_title('Title',fontsize=18)
ax.set_xlabel('xlabel', fontsize=18,fontfamily = 'sans-serif',fontstyle='italic')
ax.set_ylabel('ylabel', fontsize='x-large',fontstyle='oblique')

对xy坐标轴进行设置

ax.grid(None, which='minor', axis='y')  # 设置网格线

 设置坐标轴tick和细节

start, end = ax.get_xlim()  # 得到x轴的刻度的范围
ax.xaxis.set_ticks(np.arange(start, end+1, 1))  # 设置坐标轴的显示的刻度值只有0,1,2,3,4
ax.xaxis.set_tick_params(rotation=45, labelsize=18, colors='r')  # 设置x轴刻度的标签的字号是18,倾斜角度为45度,颜色是红色
ax.yaxis.tick_right()  # 将y轴刻度和刻度标签(如果存在)移动到轴的右侧。

最后进行显示

plt.show()

### 使用 `matplotlib.pyplot.axis` 函数的相关说明 #### 设置坐标轴范围 通过调用 `plt.axis()` 可以设置当前图表的坐标轴范围。此方法接受四个参数,分别对应于 x 轴最小值、x 轴最大值、y 轴最小值以及 y 轴最大值[^1]。 ```python import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots() ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # Set limits for both axes plt.axis([0, 5, 0, 8]) plt.show() ``` #### 自动调整坐标轴比例 当希望自动适应数据来设定最佳的比例时,可以传递字符串 `'auto'` 给 `plt.axis()` 方法,这会让 Matplotlib 根据所绘的数据自动计算合适的边界。 ```python plt.axis('auto') ``` #### 控制坐标轴外观 除了控制数值界限外,还可以利用该命令改变坐标系统的显示方式。例如,“equal”选项确保单位长度相等;而“scaled”则保持纵横比不变。“tight”的作用在于紧密贴合图像中的对象边缘。 ```python # Equal scaling (i.e., makes circles circular) plt.axis('equal') # Scaled such that everything fits tightly within the figure area plt.axis('tight') ``` #### 获取当前坐标轴状态 如果不带任何参数调用 `plt.axis()` ,那么它会返回一个列表形式的结果,里面包含了现有图形窗口内的 X 和 Y 坐标的上下限信息。 ```python current_limits = plt.axis() print(current_limits) ``` #### 关闭或开启特定方向上的刻度标记 对于某些特殊需求来说,可能只需要关闭某一边界的标签或者全部隐藏起来。这时可以通过向 `plt.axis()` 提供额外的关键字参数实现这一目的。 ```python # Turn off all tick labels but keep grid lines visible plt.axis(xticklabels=False, yticklabels=False) # Hide entire frame including ticks and spines plt.axis(False) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值