day11 matplotlib学习

figure

  1. 语法说明

    figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
    
    """
          num : 图像编号或名称,数字为编号,字符串为名称
      figsize : 指定figure的宽和高,单位为英寸
          dpi : 指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80
    facecolor : 背景的颜色
    edgecolor : 边框颜色
      frameon : 是否显示边框
    """
    
  2. 实例代码

    #一个图
    y1=2*x+2
    y2=x**2
    plt.figure(num=1,figsize=(8,4))
    plt.plot(x,y1,color='black',linewidth=1,linestyle='--')
    plt.plot(x,y2,color='red',linewidth=3)
    plt.show()
    
    #两个图
    y1=2*x+2
    y2=x**2
    plt.figure(num=1)
    plt.plot(x,y1)
    plt.figure(num=2)
    plt.plot(x,y2)
    plt.show()
    

image-20210317164552523

image-20210317164708411

坐标轴设置

  1. 坐标轴的文字描述和标尺

    x1=np.linspace(-5,5,50)
    y1=2*x1+2
    y2=x1**2
    plt.figure(num=1,figsize=(8,4))
    plt.plot(x1,y1,color='black',linewidth=1,linestyle='--')
    plt.plot(x1,y2,color='red',linewidth=3)
    #选择想要展示的x,y范围
    plt.xlim((-2,3))
    plt.ylim((0,4))
    #描述坐标轴,这里我用中文显示不了,只有英文可以正常显示
    plt.xlabel('day')
    plt.ylabel('money')
    #想更换坐标轴标尺
    plt.figure(num=2,figsize=(8,4))
    plt.plot(x1,y1,color='black',linewidth=1,linestyle='--')
    plt.plot(x1,y2,color='red',linewidth=3)
    plt.xlim((-2,3))
    plt.ylim((0,4))
    #把x轴换成(-2,3)显示10个节点
    new_ticks=np.linspace(-2,3,10)
    plt.xticks(new_ticks)
    #把y轴上的节点[1,2,3,4]换成对应的字符['very good','good','normal','bad']
    plt.yticks([1,2,3,4,],['very good','good','normal','bad'])
    #字符改成机器能读的而且是数学形式
    #plt.yticks([1,2,3,4,],[r'$very\ good$',r'$good$',r'$normal$',r'$bad$'])
    plt.show()
    

    image-20210317204914484

  2. 移动坐标轴

    x1=np.linspace(-5,5,50)
    y1=2*x1+2
    y2=x1**2
    plt.figure(num=1,figsize=(8,4))
    plt.plot(x1,y1,color='black',linewidth=1,linestyle='--')
    plt.plot(x1,y2,color='red',linewidth=3)
    #gea是'get current axis'的简写,也就是把轴拿出来
    ax=plt.gca()
    #轴的脊梁也就是四个边框,
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    #用下面的边框充当x轴,左边充当y轴
    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_ticks_position('left')
    #移动坐标轴
    ax.spines['bottom'].set_position(('data',0))#把x轴绑定在y=0的位置
    ax.spines['left'].set_position(('data',2))#把y轴绑定在x=2的位置
    plt.show()
    

    image-20210317213601427

Legend 图例

  1. 参数介绍

    plt.legend( )中有handleslabelsloc三个参数,其中:

    handles需要传入你所画线条的实例对象

    labels是图例的名称(能够覆盖在plt.plot( )中label参数值)

    loc代表了图例在整个坐标轴平面中的位置(一般选取'best'这个参数值)

  2. 代码

    x1=np.linspace(-5,5,50)
    y1=2*x1+2
    y2=x1**2
    plt.figure(num=1,figsize=(8,4))
    line1, =plt.plot(x1,y1,color='black',linewidth=1,linestyle='--',label='money')
    line2, =plt.plot(x1,y2,color='red',linewidth=2,label='time')
    plt.legend(handles=[line1, line2], labels=['girl','boy'],loc='best')
    plt.show()
    

    image-20210317224614668

  3. 上述代码中,可以看到,若要plt.legend( )中的参数handels要想获取线条图像的实例,必须要用类似于 line1, = plt.plot( ) 这种写法

    稍作解释,plt.plot( )返回的是一个二元组值,若要获取实例,必须用x, = plt.plot( )才能取出来实例对象。还有,handles和labels传入的值必须一一对应,要不然图例就乱了。

posted @ 2021-01-16 23:02  晨起  阅读(73)  评论(0编辑  收藏  举报