分图

    1. import matplotlib.pyplot as plt
    2. fig = plt.figure()
    3. plt.subplot(2,2,1) ## row column number 2行2列第一张图
    4. plt.plot([0,1],[0,1])
    5. plt.subplot(2,2,2) ## row column number 2行2列第2张图
    6. plt.plot([0,1],[0,2])
    7. plt.subplot(2,2,3) ## row column number 2行2列第3张图
    8. plt.plot([0,1],[0,3])
    9. plt.subplot(2,2,4) ## row column number 2行2列第4张图
    10. plt.plot([0,1],[0,4])
    11. plt.show()

    Screen Shot 2021-11-29 at 12.06.55 PM.png

    1. fig = plt.figure()
    2. plt.subplot(2,1,1) ## row column number 2行1列第一张图(可以理解为1张图占3张图的地方)
    3. plt.plot([0,1],[0,1])
    4. plt.subplot(2,3,4) ## row column number 2行3列第1张图,注意编号从4开始
    5. plt.plot([0,1],[0,2])
    6. plt.subplot(2,3,5) ## row column number 2行3列第2张图
    7. plt.plot([0,1],[0,3])
    8. plt.subplot(2,3,6) ## row column number 2行3列第3张图
    9. plt.plot([0,1],[0,4])

    Screen Shot 2021-11-29 at 12.31.55 PM.png
    分格图

    1. ## method 1 : subplot2grid
    2. ##########################
    3. plt.figure()
    4. ax1 = plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1) ## (3,3)行列(0,0)起点 c
    5. ## colspan 列跨度 row行跨度
    6. ax1.plot([1,2],[1,2])
    7. ax1.set_title('ax1_title')
    8. ax2 = plt.subplot2grid((3,3),(1,0),colspan=2,rowspan=1) ## 起点,第2行
    9. ax3 = plt.subplot2grid((3,3),(1,2),colspan=1,rowspan=2)
    10. ax4 = plt.subplot2grid((3,3),(2,0),colspan=1,rowspan=1)
    11. ax5 = plt.subplot2grid((3,3),(2,1),colspan=1,rowspan=1)

    Screen Shot 2021-11-29 at 12.45.28 PM.png
    keypoint:找到各个小图的起点坐标,即左上顶点
    第二种方法:gridspec

    1. plt.figure()
    2. gs = gridspec.GridSpec(3,3)
    3. ax1 = plt.subplot(gs[0,:])
    4. ax2 = plt.subplot(gs[1,:2])
    5. ax3 = plt.subplot(gs[1:,2])
    6. ax4 = plt.subplot(gs[2,0])
    7. ax5 = plt.subplot(gs[2,1])

    Screen Shot 2021-11-29 at 12.56.20 PM.png
    核心思想也是一样,都是顶点坐标和跨度,不过用slice的方法表示
    第三种 subplots

    1. f,((ax11,ax12),(ax21,ax22))=plt.subplots(2,2,sharex=True,sharey=True) ## 共享x、y轴
    2. ## 分别给f传入(第一行),(第二行)
    3. ax11.scatter([1,2],[1,2])

    Screen Shot 2021-11-29 at 1.01.04 PM.png
    图中图

    1. left,bottom,width,height = 0.1,0.1,0.8,0.8
    2. ax1 = fig.add_axes([left,bottom,width,height]) ## 设定大图的框架
    3. ax1.plot(x,y,'r')
    4. ax1.set_xlabel('x')
    5. ax1.set_ylabel('y')
    6. ax1.set_title('title')
    7. left,bottom,width,height = 0.2,0.6,0.25,0.25
    8. ax2 = fig.add_axes([left,bottom,width,height]) ## 设定大图的框架
    9. ax2.plot(x,y,'b')
    10. ax2.set_xlabel('x')
    11. ax2.set_ylabel('y')
    12. ax2.set_title('inside_1')
    13. plt.axes([.6,0.2,0.25,0.25])
    14. plt.plot(y[::-1],x,'g')
    15. plt.xlabel('x')
    16. plt.ylabel('y')
    17. plt.title('inside_2')

    Screen Shot 2021-11-29 at 1.26.22 PM.png
    keypoint: 设定各图的坐标占画布的比例
    共享x轴

    1. x = np.arange(0,10,0.1)
    2. y1 =0.05*x**2
    3. y2 = -1*y1
    4. fig,ax1 = plt.subplots()
    5. ax2 = ax1.twinx() ## 共享x轴,x2 为x1的镜像翻转
    6. ax1.plot(x,y1,'g-')
    7. ax2.plot(x,y2,'b--')
    8. ax1.set_xlabel('x data')
    9. ax1.set_ylabel('Y1',color='green')
    10. ax2.set_ylabel('Y2',color='blue')
    11. plt.show()

    Screen Shot 2021-11-29 at 1.45.26 PM.png
    动画

    1. import matplotlib.pyplot as plt
    2. import numpy as np
    3. from matplotlib import animation
    4. fig,ax = plt.subplots()
    5. x = np.arange(0,2*np.pi,0.01)
    6. line,= ax.plot(x, np.sin(x)) ## ,因为plot返回值是一个list,直接调用值也是一个list,,用,破除
    7. def animate(i):
    8. line.set_ydata(np.sin(x+i/10))
    9. return line,
    10. def init():
    11. line.set_ydata(np.sin(x))
    12. return line,
    13. ani = animation.FuncAnimation(fig=fig,func=animate,frames=100,
    14. init_func=init,interval=20,
    15. blit=False)
    16. plt.show()

    Screen Shot 2021-11-29 at 2.06.56 PM.png
    动起来!(截图看不到)
    完结,撒花~

    参考:https://github.com/MorvanZhou/tutorials/tree/master/matplotlibTUT
    https://www.bilibili.com/video/BV1Jx411L7LU?p=19