参考:https://zhuanlan.zhihu.com/p/139052035https://zhuanlan.zhihu.com/p/93423829https://zhuanlan.zhihu.com/p/111108841

显示中文

  1. import matplotlib as mpl
  2. import matplotlib.pyplot as plt
  3. # 用来正常显示中文标签
  4. plt.rcParams['font.sans-serif'] = ['SimHei']
  5. # 用来正常显示负号
  6. plt.rcParams['axes.unicode_minus'] = False

plt与axes

  1. # plt
  2. fig=plt.figure(num=1,figsize=(4,4))
  3. plt.subplot(111)
  4. plt.plot([1,2,3,4],[1,2,3,4])
  5. plt.show()
  6. # axes
  7. fig=plt.figure(num=1,figsize=(4,4))
  8. ax=fig.add_subplot(111)
  9. ax.plot([1,2,3,4],[1,2,3,4])
  10. plt.show()
  • fig,生成一个画布,plt.subplot(111),将画布分为1x1的分布,并选中第一个子图进行操作。
  • 虽然这样看着一样呢,但是后面修饰图片的时候,ax这个方式比plt的方式更加方便。

Matplotlib - 图1

子图的创建

  1. fig=plt.figure(num=1,figsize=(4,4))
  2. ax1=fig.add_subplot(221)###可从图中看到,我们的画布是分为2x2的区域
  3. ax1.plot([1,2,3,4],[1,2,3,4])
  4. ax2=fig.add_subplot(222)
  5. ax2.plot([1,2,3,4],[2,2,3,4])
  6. ax3=fig.add_subplot(223)
  7. ax3.plot([1,2,3,4],[1,2,2,4])
  8. ax4=fig.add_subplot(224)
  9. ax4.plot([1,2,3,4],[1,2,3,3])
  10. plt.show()

Matplotlib - 图2
也可以用如下方式创建子图:

  1. # fig, ax = plt.subplots(2,1,figsize(14,7))
  2. # ax[0].***
  3. # ax[1].***

plt.title(‘’)

plt.xlabel(‘’), plt.ylabel(‘’)

x、y轴的名字

plt.plot()

图例:plt.legends(labels=[], loc=’’)

  • labels是图例的名称(能够覆盖在plt.plot( )中label参数值)
  • loc用以控制图例在整个坐标平面的位置。
    • 第一种:loc = ‘best’

图例自动‘安家’在一个坐标面内的数据图表最少的位置

  • 第二种:loc = ‘XXX’

这里的’XXX’代表了坐标面中的九个位置,例如loc = ‘center’表示坐标平面中心位置,九种参数值及所对应位置如下图所示:
Matplotlib - 图3

网格线:plt.grid()

  1. plt.grid() # 显示网格线 1=True=默认显示;0=False=不显示
  2. plt.grid(1) # 显示网格线
  3. plt.grid(True) # 显示网格线
  4. plt.grid(b=True) # 显示网格线
  5. plt.grid(b=1) # 显示网格线
  6. plt.grid(b=True, axis='x') #只显示x轴网格线
  7. plt.grid(b=True, axis='y') #只显示y轴网格线

boilerplate

plt.plot()折线图

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. plt.rcParams['font.sans-serif'] = ['SimHei']
  4. plt.rcParams['axes.unicode_minus'] = False
  5. n = np.linspace(-5, 4, 30)
  6. m1 = 3 * n + 2
  7. m2 = n ** 2
  8. plt.plot(n, m1, color='r', linewidth=1.5, linestyle='-')
  9. plt.plot(n, m2, 'b')
  10. plt.xlabel('时间')
  11. plt.ylabel('心情')
  12. plt.show()

plt.scatter()散点图

  • c 点的颜色或颜色序列,默认蓝色。其它如c = ‘r’ (red); c = ‘g’ (green); c = ‘k’ (black) ; c = ‘y’(yellow)
  • marker 形状,可选值,默认是圆:marker=’*’, marker=’x’,marker=’o’…

    同一张图包含多个子图subplot

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. x = np.arange(0, 100)
    4. #作图1
    5. plt.subplot(221)
    6. plt.plot(x, x)
    7. #作图2
    8. plt.subplot(222)
    9. plt.plot(x, -x)
    10. #作图3
    11. plt.subplot(223)
    12. plt.plot(x, x ** 2)
    13. plt.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
    14. #作图4
    15. plt.subplot(224)
    16. plt.plot(x, np.log(x))
    17. plt.show()

    Linux上作图

    1. 画完之后不用plt.plot()而是plt.savefig('xxx.jpg')

    plt.figure()参数说明

    figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
    num:图像编号或名称,数字为编号 ,字符串为名称
    figsize:指定figure的宽和高,单位为英寸;
    dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
    facecolor:背景颜色
    edgecolor:边框颜色
    frameon:是否显示边框
    1. # 一般使用其中这俩参数,注意figsize是指定宽和高.
    2. plt.figure(figsize=(20,10), dpi=80)

    plt.plot()绘制折线图,并标注最大值

    matplotlib.pyplot绘制多个折线图,并标注最大值和最小值