转载请附原文地址,谢谢。
从结果的角度考察ax=fig.add_axes([0,0,1,1])的作用
1、前言:(可跳过)
虽然使用matplotlib.pyplot模块可以很容易地快速生成图,但建议使用面向对象的方法,因为它可以为你的图提供更多的控制和定制。大部分的函数也可以在matplotlib.axes.Axes类中使用。使用更正式的面向对象方法背后的主要想法是创建图对象,然后只需调用该对象的方法或属性。这种方法有助于更好地处理画布上有多个图的情况。
但是在面向对象的界面中,Pyplot只用于创建图形等少数功能,用户明确地创建并跟踪图形和轴对象。在这个层面上,用户使用Pyplot创建数字,通过这些数字,可以创建一个或多个轴对象。这些坐标轴对象就可以用于大多数绘图操作。
2、步骤
首先,我们还是先创建一个图的实例,既提供一个空的画布:
fig = plt.figure()
然后为图形添加轴。add_axes()方法需要一个由4个元素组成的list对象,分别对应图形的左、底、宽、高。每个数字必须在0和1之间。
ax=fig.add_axes([0,0,1,1])
到这里,不明白fig.add_axes([0,0,1,1])是怎么回事也没关系,下面直接看实例,分别改变0,0,1,1的数值,看一下图像的变化:
下面是初始代码块
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()
ax = fig.add_axes([0,0,1,1])
ax.plot(x,y)
plt.show()
初始显示结果如下:
改动为 ax= fig.add_axes([0.8,0,1,1]),由下图的显示结果可知,改变第一个参数为0.8,图像从左往右移动了80%,只能看到图片左边20%的部分。
改动为ax = fig.add_axes([0,0.8,1,1]),由下图的显示结果可知,改变第二个参数为0.8,图像从下往上移动了80%。
改动为ax = fig.add_axes([0,0,0.5,1]),由下图的显示结果可知,改变第三个参数为0.5,图像在宽度方向上压缩了一半,且位置靠在最左边。
改动为ax = fig.add_axes([0,0,1,0.5]),由下图的显示结果可知,改变第四个参数为0.5,图像在高度方向上压缩了一半,且位置靠在最下边。
这有什么用呢,下面我们同时改变这四个参数,看一下效果:
此时ax = fig.add_axes([0.5,0.5,0.3,0…3]),由下图可以看出,利用这四个参数,我们可以在原来设定的画板上的任意位置进行贴图。
附:以上结果仅仅是在pycharm进行的,如果你是在jupyter notebook中进行的,也是一样的道理,如下截图所示: