3、plt.figure()和Axes类

Figure类和Axes类

本文从介绍一下Figure类和Axes类,二者的区别,以及一些实例。

1、Figure类

matplotlib.figure模块包含了Figure类。它是所有绘图元素的顶层容器。Figure对象是通过调用pyplot模块中的fig()函数来实例化的,如下所示。(简单来说,Figure就是给我们画图提供了一个画布,这个画布的参数我们可以通过Figure类进行调整和修改,画布弄好之后才方便在上面作图)

fig = plt.figure()

它有一下几个参数:

参数解释
figsize(宽,高),是个元组,表示Figure的大小
dpi每英寸的点数,也就是分辨率
facecolor画布的颜色
edgecolor画布的边缘颜色
linewidth边缘的线宽

下面来具体的看一个实例:

from matplotlib import pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
fig = plt.figure(figsize=(8,4),dpi=144,facecolor='r')
ax = fig.add_axes([0,0,0.7,0.7])
ax.plot(x,y)
ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')
plt.show()

显示结果如下,我们可以看到,这个figure实际是画布的背景,我们画的图是在axes上画的。
在这里插入图片描述

2、Axes类

Axes对象是图像中具有数据空间的区域。一个给定的图可以包含许多Axes,但一个给定的Axes对象只能在一个图中。通过调用add_axes()方法将轴对象添加到图形中。它返回axes对象,并在矩形[左,底,宽,高]的位置添加一个轴(效果见此处链接),其中所有的数量都是图形宽度和高度的分数,这里不过多介绍。
以下是axes类的成员函数,它们为绘图添加了不同的元素:
函数1:Legend:axes类的legend()方法为绘图图添加了一个图例。它需要三个参数:

ax.legend(handles, labels, loc)

其中label是一个字符串序列,并处理Line2D或Patch实例的序列。loc可以是一个字符串或一个整数,指定图例的位置。
在这里插入图片描述
函数2:axes.plot(),这是axes类的基本方法,它将一个数组的值与另一个数组的值以线或标记的形式绘制出来。plot()方法可以有一个可选的格式字符串参数来指定线条和标记的颜色、样式和大小。

axes.plot()

颜色:
在这里插入图片描述
样式:
在这里插入图片描述
线型:
在这里插入图片描述

举例如下:

例1:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(20)

fig = plt.figure()
ax = plt.subplot(111)

for i in range(4):
    ax.plot(x, i * x, label='$y = %ix$' % i)

ax.legend(loc=0)

plt.show()

显示结果如下,loc为0,系统默认会选择一个最好的位置,label为这些图例的内容
在这里插入图片描述
例2:

import matplotlib.pyplot as plt
y = [1, 4, 9, 16, 25,36,49, 64]
x1 = [1, 16, 30, 42,55, 68, 77,88]
x2 = [1,6,12,18,28, 40, 52, 65]
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
l1 = ax.plot(x1,y,'ys-') # solid line with yellow colour and square marker
l2 = ax.plot(x2,y,'go--') # dash line with green colour and circle marker
ax.legend(labels = ('tv', 'Smartphone'), loc = 'lower right') # legend placed at lower right
ax.set_title("Advertisement effect on sales")
ax.set_xlabel('medium')
ax.set_ylabel('sales')
plt.show()

显示结果如下:

在这里插入图片描述

3、plt./ax./fig的区别

在matplotlib中,有两种画图模式:

一种是plt.系列,这个plt.提供了一些基本的函数,可以画一些简单的图,如果你想要精细的画图,这种画图模式就不得行了。于是,有了第二种方法。

另一种是fig,ax = plt.subplots(),这种是通过axes来画的,通过指定figure和axes,对axes进行单独操作。建议画图都用这种。

为了更好的说明我们的参数和图的对应关系,见下图:(点此查看官网解释
在这里插入图片描述
下面看官网对上图的整体解释:

整个人物(标记为外红框)。图中记录了所有的子Axes、少量的 "特殊 "艺术家(标题、图例等)和画布。不要太担心画布,它是至关重要的,因为它是实际做画的对象,让你得到你的剧情,但作为用户,它对你来说多少是看不见的)。一个图形可以有任何数量的Axes,但为了有用,至少应该有一个。
通俗解释: 红外框的就是画布,要在画布上进行创作,这个画布上可以有一定数量的Axes,就是图中蓝色线框住的部分,你需要在这个画布上画多少图,那么就需要有多少个Axes,比如,如果你的figure有subplot,也就是子图的画,每个子图就是一个Axes。

官网对上图中的Axes的解释:

这就是你所认为的 “一个图”,它是图像中具有数据空间的区域(标记为蓝色内框)。一个给定的图可以包含许多Axes,但一个给定的Axes对象只能在一个图中。Axes包含两个(如果是3D,则是三个)Axis对象(要注意Axes和Axis之间的区别),它负责数据的限制(数据限制也可以通过set_xlim()和set_ylim()Axes方法来控制)。每个Axes都有一个标题(通过set_title()设置),一个x-label(通过set_xlabel()设置)和一个y-label(通过set_ylabel()设置)。
**通俗解释:**就是Axes很吊,可以修改设置的变量非常多。

官网对上图中Axis的解释:

这些是类似数字线的对象(绿色圈出)。它们负责设置图形限制和生成tick(轴上的标记)和ticklabels(标记tick的字符串)。标记的位置由Locator对象决定,ticklabel字符串由Formatter格式化。正确的Locator和Formatter的组合可以对tick位置和标签进行非常精细的控制。
通俗解释: Axis,为图中绿色圈出的坐标轴部分,这部分可以进行精细的修改和调整。比如用ax.xaxis和ax.yaxis调整坐标轴。

官网也对Figure对分进行了精细的名称定位,方便修改官网见此。如下图所示:
在这里插入图片描述
上图给出了各个部分的名称,也可以说是关键字,方便我们查询调整。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

steelDK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值