Matplotlib数据可视化实操–axes()及其类函数和subplot()、subplots()、subplot2grid()用法说明

文章目录

一、Matplotlib axes类使用详解

Matplotlib首先需要通过调用pyplot模块中提供的figure()函数创建图形对象,然后通过对对象添加一个或多个axes绘图区域,具体的axes类的函数有以下3种:

2D 绘图区域(axes)包含两个轴(axis)对象;如果是 3D 绘图区域,则包含三个。

1.add_axes()函数

调用 add_axes() 方法是 以figure()函数创建的画布为对象,生成一个 axes 绘图区域,其位置由4个浮点数元素组成的 列表确定,形如 add_axes([left, bottom, width, height]),表示添加到画布中的矩形区域的左下角坐标(x, y),以及宽度和高度,4个参数的取值范围均在0-1之间。

每个元素的值是在将整个画布的长,宽看作单位1的前提下取值,比如,[ 0.1, 0.1, 0.8, 0.8],left=0.1是相对于长的1/10,bottom=0.1是相对于宽的1/10从而定位绘图区域的原点位置

直观展示如下:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
plt.show()

绘制的图形区域为如下所示:

Matplotlib数据可视化实操--axes()及其类函数和subplot()、subplots()、subplot2grid()用法说明

2.legend()绘制图例

专业术语是图例,简单理解就是对绘图区域中包含所有线型的标注说明

axes类中的legend()函数是 以创建的绘图区域为对象绘制画布中的图例,形如 ax.legend(handles, labels, loc),它的三个参数说明:

  1. handles 参数,它也是一个 列表,它包含了所有线型的实例,若没有说明则按之前代码绘制的线型为默认顺序对其进行名称标注,即对应标注的线型对象
  2. labels 是一个字符串 列表,用来指定标签的名称,即命名相应对象的名称
  3. loc 是指定图例位置的 参数,其参数值可以用字符串或整数来表示,即说明标注的位置

下面是 loc 参数的表示方法,分为字符串和整数两种:

位置自适应、右(左)上方、 左(右)下、 右侧、居中靠左(右)、底部(上部)居中、中部字符串表示Best、upper right(left)、lower left(right)、right、center left(right)、lower(upper) center、center整数数字表示0、1(2)、3(4)、5、6(7)、8(9)、10

3.plot()绘制线型

这是 axes 类的基本方法也是 以创建的绘图区域为对象绘制画布中的线型,它将一个数组的值比如x,与另一个数组的值比如y ,绘制成线或标记plot() 方法 具有可选格式的字符串参数,该参数用来指定线型、标记颜色、样式以及大小,形如 ax.plot(x,y,'go-- ')

  1. 颜色代码如下:

蓝色绿色红色青色品红色黄色黑色白色’b”g”r”c”m”y”k”w’

  1. 标记符号如下:

点标记圆圈标记’X’标记砖石标记六角标记正方形标记加号标记’.”o”x”D”H”s”+’

  1. 线型表示字符如下:

实线虚线点划线虚线六角标记’-”–”-.”H’

4.实例演示

下面的例子,以直线图的形式展示了电视、智能手机广告费与其所带来产品销量的关系图。其中描述电视的是带有黄色和方形标记的实线,而代表智能手机的则是绿色和圆形标记的虚线。

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-')
l2 = ax.plot(x2,y,'go--')
ax.legend(labels=(['tv', 'Smartphone']),loc = 'lower right')
ax.set_title("Advertisement effect on sales")
ax.set_xlabel('medium')
ax.set_ylabel('sales')
plt.show()

显示的效果如下:

Matplotlib数据可视化实操--axes()及其类函数和subplot()、subplots()、subplot2grid()用法说明

二、subplot()函数用法详解

Matplotlib首先要调用pyplot模型中提供的subplot()函数,该函数可以将一个(图形对象)画布上均等的划分若干个子绘制区域进行操作,函数格式为 plt.subplot(nrows, ncols, index) ,nrows 与 ncols 表示要划分几行几列的子区域(nrows*nclos表示子图数量),index 的初始值为1,用来选定具体的某个子区域,具体排列顺序是按从左向右,你上到下原则创建的。

例如:如subplot(233)表示在当前画布的右上角创建一个两行三列的绘图区域(如下图所示),同时选择在第 3 个位置绘制子图,

Matplotlib数据可视化实操--axes()及其类函数和subplot()、subplots()、subplot2grid()用法说明

使用的三个原则和方法如下:

  1. 若使用 subplot()函数在指定区域创造的新建子图与现有的子图重叠,那么重叠部分的子图将会被自动删除,因为它们不可以共享绘图区域
    import matplotlib.pyplot as plt
    plt.plot([1,2,3])

    plt.subplot(211)
    plt.plot(range(12))
    plt.subplot(212, facecolor='y')
    plt.plot(range(12))
    plt.show()

上述代码运行结果,如下图所示:

Matplotlib数据可视化实操--axes()及其类函数和subplot()、subplots()、subplot2grid()用法说明
  1. 如果不想覆盖之前的图,需要使用 add_subplot() 函数,代码如下:
import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot([1,2,3])
ax2 = fig.add_subplot(221,facecolor='y')
ax2.plot(range(12))
plt.show()

执行上述代码,输出结果如下:

Matplotlib数据可视化实操--axes()及其类函数和subplot()、subplots()、subplot2grid()用法说明
  1. 通过给画布添加 axes 对象可以实现在同一画布中插入另外的图像
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_axes([0.1,0.1,0.8,0.8])
ax1.plot([1,2,3],'b')
ax2 = fig.add_axes([0.6,0.2,0.3,0.3])
ax2.plot([1,2,3],'r')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
asx2.set_title('linear')
plt.show()

输出结果如下:

Matplotlib数据可视化实操--axes()及其类函数和subplot()、subplots()、subplot2grid()用法说明

三、subplots()函数详解

matplotlib中调用的pyplot还提供了subplots()函数,使用方法和 subplot() 函数类似。其不同之处在于,subplots() 既创建了一个包含子图区域axes,又创建了一个 figure 图形对象,而 subplot() 只是创建一个包含子图区域的figure图形对象。其函数格式为 fig , a = plt.subplots(nrows, ncols) ,函数的返回值是一个元组,包括一个图形对象和所有的 axes 对象。其中 axes 对象的数量等于 nrows * ncols,且每个 axes 对象均可通过索引值访问(从0开始)

    import matplotlib.pyplot as plt
    fig,a =  plt.subplots(2,2)
    import numpy as np
    x = np.arange(1,5)

    a[0][0].plot(x,x*x)
    a[0][0].set_title('square')

    a[0][1].plot(x,np.sqrt(x))
    a[0][1].set_title('square root')

    a[1][0].plot(x,np.exp(x))
    a[1][0].set_title('exp')

    a[1][1].plot(x,np.log10(x))
    a[1][1].set_title('log')
    plt.show()

输出结果为:

Matplotlib数据可视化实操--axes()及其类函数和subplot()、subplots()、subplot2grid()用法说明

四、subplot2grid()函数详解

matplotlib.pyplot 模块提供了 subplot2grid() ,与 subplot() 和 subplots() 函数不同,subplot2gird() 函数以非等分的形式对画布进行切分,并按照绘图区域的大小来展示最终绘图结果。其函数格式为 plt.subplot2grid(shape, location, rowspan, colspan) ,具体用函数参数意义为:

  1. shape:把该参数值规定的网格区域作为绘图区域;
  2. location:在给定的位置绘制图形,初始位置 (0,0) 表示第1行第1列;
  3. rowsapan/colspan:这两个参数用来设置让子区跨越几行几列。
    import matplotlib.pyplot as plt

    a1 = plt.subplot2grid((3,3),(0,0),colspan = 2)
    a2 = plt.subplot2grid((3,3),(0,2), rowspan = 3)
    a3 = plt.subplot2grid((3,3),(1,0),rowspan = 2, colspan = 2)
    import numpy as np
    x = np.arange(1,10)
    a2.plot(x, x*x)
    a2.set_title('square')
    a1.plot(x, np.exp(x))
    a1.set_title('exp')
    a3.plot(x, np.log(x))
    a3.set_title('log')
    plt.tight_layout()
    plt.show()

输出结果为:

Matplotlib数据可视化实操--axes()及其类函数和subplot()、subplots()、subplot2grid()用法说明

Original: https://blog.csdn.net/tore007/article/details/125816264
Author: TORE007
Title: Matplotlib数据可视化实操–axes()及其类函数和subplot()、subplots()、subplot2grid()用法说明

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/764362/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球