Matplotlib——基础语法与常用参数

 

 

 

 

基本绘图流程

 

 

 

 

 

 

   In[ ]:  import  numpy  as  np          #引入 np

       import  matplotlib.pyplot  as  plt     #引入 plt

       plt.plot([3,3,5,6,2])            #用 plot 函数绘制二维图形

          #当只有一组数据时,此数据代表 y 轴数,下标代表 x 轴数

       plt.ylabel("garde")            #给 y 轴加标签 “gard”

       plt.savefig('D:/classwork/例1.png'.dpi=600)   #保存图形,dpi 英寸像素点(质量)

       plt.show()                #显示图形,默认 PNG 格式

 

使用Matplotlib绘制图表,需要先导入绘制图表的模块pyplot

      Import  matplotlib.pyplot  as  plt(plt引入模块别名)

绘图流程:创建画布—创建子图——制作图形——美化图片——保存图片——显示图片

Pyplot模块中默认有一个Figure对象,该对象可以理解为一张空白的画布,用于容纳图表的各种组件。

 

 

1.创建画布与创建子图

  第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅画上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。

创建一个空白画布

如果不希望在默认的画布山上绘制图形,则可以调用figure()函数构建一张新的空白画布

plt.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)

  num:图像编号或名称,数字为编号,字符串为名称

  figsize:指定 figure 的宽和高,单位为英寸

  dpi:参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80,1英寸等于2.5cm

  facecolor:背景颜色

  edgecolor:边框颜色

  frameon:是否显示边框

 

创建画布

  In[ ]:  %matplotlib  notebook  #如果画布不显示,则输入此行

      fig=plt.figure(1,facecolor='r')

      plt.savefig('D:/classwork/例2.png',facecolor=fig.get_facecolor())

 

创建并选中子图

plt.subplot(nrows,ncols,plot_number)

     #行  #列 #当前子图区

 

 

创建子图

  In[ ]:  fig=plt.figure(figsize=(5,5),facecolor='#FF9966')      #创建画布时设置背景颜色

      plt.subplot(3,2,4)

      plt.plot([0,2,4,6,8],[3,1,4,5,2])

      plt.xlabel("garde")

      plt.savefig('D:/classwork/例3',dpi=600,facecolor=fig.get_facecolor())

 

2.添加画布内容

  第二部分是绘图的主体部分。其中的添加标题、添加坐标轴名称、绘制图形等步骤是并列的,没有先后顺序,但是添加图例一定要在绘制图形之后。

      Pyplot中添加各类标签和图例的常用函数

 

 

 

 

 

 

3.保存与显示图形 

  第三部分主要用于保存和显示图形,这部分内容的常用函数只有两个,并且参数很少。

        Pyplot中保存与显示图形的常用函数

 

 

 

 

pyplot中的基础绘图语法 

   In[ ]:  import  numpy  as  np

       import  matplotlib.pyplot  as  plt

       a = np.arange(0,1.1,0.01)

       plt.title('lines')          #添加标题

       plt.xlabel('x')            #添加 x 轴名称

       plt.ylabel('y')           #添加 y 轴名称

       plt.xlim((0,1))          #确定 x 轴范围

       plt.ylim((0,1))          #确定y 轴范围

       plt.xticks([0,0.2,0.4,0.6,0.8,1])    #规定 x 轴刻度

       plt.yticks([0,0.2,0.4,0.6,0.8,1])    #规定 y 轴刻度

       plt.plot(a,a**2)         #添加 y=x^2 曲线

       plt.plot(a,a**4)         #添加 y=x^4 曲线

       plt.legend(['y=x^2','y=x^4'])   #添加图例

       plt.savefig('D:/classwork/例4.png')

       plt.show()

  Out[ ]:  

        

 

 

 包含子图绘制的基础语法

  In[ ]:  rad = np.arange(0,np.pi*2,0.01)    

      #第一幅子图

       p1 = plt.figure(figsize=(8,6),dpi=80)       #确定画布大小

       ax1 = pl.add_subplot(2,1,1)          #创建一个2行1列的子图,并开始绘制第一幅

       plt.title('lines')                 #添加标题

       plt.xlabel('x')                 #添加 x 轴的名称

       plt.ylable('y')                  #添加 y 轴的名称

       plt.xlim((0,1))                 #添加 x 轴范围

       plt.ylim((0,1))                 #添加 y 轴范围

       plt.xticks([0,0.2,0.4,0.6,0.8,1])            #确定 x 轴刻度

       plt.yticks([0,0.2,0.4,0.6,0.8,1])              #确定 y 轴刻度

       plt.plot(rad,rad**2)               #添加 y=x^2 曲线

       plt.plot(rad,rad**4)               #添加 y=x^4 曲线

       plt.legend(['y=x^2','y=x^4'])      

      #第二幅子图

      ax2 = pl.add_subplot(2,1,2)            #开始绘制第二幅

      plt.title('sin/cos')                  #添加标题

      plt.xlabel('rad')                   #添加 x 轴的名称

      plt.ylabel('value')                  #添加 y 轴的名称

      plt.xlim((0,np.pi*2))               #确定 x 轴范围

      plt.ylim((-1,1))                   #确定 y 轴范围

      plt.xticks([0,np.pi/2,np.pi,np.pi*1.5,np.pi*2])    #确定 x 轴刻度

      plt.yticks([-1,-0.5,0,0.5,1])               #确定 y 轴刻度

      plt.plot(rad,np.sin(rad))              #添加 sin 曲线

      plt.plot(rad,np.cos(rad))              #添加 cos 曲线

      plt.legend(['sin','cos'])

      plt.savefig('D:/classwork/sincos.png')

      plt.show()

  Out[ ]:

      

 

 

 

 

 设置 pyplot 的动态参数

  pyplot 使用 rc 配置文件来自定义图形的各种默认属性,被称为 rc 配置或 rc 参数。在 pyplot 中,几乎所有的属性都是可以控制的,例如视图窗口大小以及每英寸点数、线条宽度、颜色和样式、坐标轴、坐标和网格属性、文本、字体等。

调节线条的 rc 参数

  In[ ]:  #原图

      x = np.linspace(0,4*np.pi)        #生成 x 轴数据

      y = np.sin(x)               #生成 y 轴数据

      plt.plot(x,y,label=("$sin(x)$")        #绘制 sin 曲线图

               #LaTex格式

      plt.title('sin')

      plt.savefig('D:/classwork/默认sin曲线.png')

      plt.show()

  Out[ ]:

      

  In[ ]:  #修改 rc 参数后的图

      plt.rcParams['lines.linestyle'] = '-.' 

      plt.rcParams['lines.linewidth'] = 3

      plt.plot(x,y,label='$sin(x)$')        #绘制三角函数

      plt.title('sin')

      plt.savefig('D:/classwork/修改rc参数后的sin曲线.png')

      plt.show()

  Out[ ]:

      

 

 

     

    

      

    

marker取值 意义 marker取值 意义 
'1' 下花三角 ‘ 2 ’ 上花三脚
'3' 左花三角 '4' 右花三角

 

 

 

 

调节字体

  默认的pyplot 字体并不支持中文字符的显示,因此需要通过设置。

  (1)rcParams 修改字体实现中文显示

      此方法会将其全部都设置为中文显示,其他无需设置的也会设置,除非新建,不推荐使用。

rcParams 的属性

属性 说明

'font.family'

用于显示字体的名字

'font.style'

用于显示字体风格,正常'normal'或'italic'

'font.size'

用于显示字体大小,整数字号或者'large','x-small'

    matplotlib.rcParams['font.family']='SimHei'      #SimHei  黑体

  In[ ]:  #无法显示中文标题

      plt.plot(x,y,label='$sin(x)$')          #绘制三角形

      plt.title('sin曲线')

      plt.savefig('D:/classwork/无法显示中文标题 sin曲线.png')

      plt.show()

  In[ ]:  #设置 rc 参数显示中文标题

      #设置字体为 SimHei 显示中文

      plt.rcParams['font.sans-serif'] = 'SimHei'

      plt.reParams['axes.unicode_minus'] = False       #设置正常显示符号

      plt.plot(x,y,label="$sin(x)$")              #绘制三角函数

      plt.title('sin 曲线')

      plt.savefig('D:/classwork/显示中文标题 sin曲线.png')

      plt.show()

  Out[ ]:  

      

 

 

   (2)在有中文输出的地方,增加一个属性:fontproperties

    plt.title('sin曲线',fontproper='SomHei',fontsize=20)

 

复杂的绘图区域

  plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)

  理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始。

   

 

 

   plt.subplot2grid((3,3),(1,0),colspan=2)

  # (3,3) 设定 3*3 网格,共 9 个网格

  # (1,0) 选定网格,确定第1 行,第 0 列

  # colspan=2,从第 1 行,第 0 列开始选中两列

  plt.subplot1grid((3,3),(0,0),colspan=3)

  plt.subplot3grid((3,3),(1,2),rowspan=2)

  plt.subplot4grid((3,3),(2,0))

  plt.subplot5grid((3,3),(2,1))

 

posted @ 2020-03-22 15:31  XANN  阅读(2667)  评论(0编辑  收藏  举报