十分钟快速学会Matplotlib基本图形操作

  • 2019 年 10 月 3 日
  • 笔记

在学习Python的各种工具包的时候,看网上的各种教程总是感觉各种方法很多很杂,参数的种类和个数也十分的多,理解起来需要花费不少的时间。

所以我在这里通过几个例子,对方法和每个参数都进行详细的解释,这样对于0基础的人也可以快速的掌握Matplotlib基本图形操作。

  • 首先导入numpy和matplotlib包
import numpy as np  import matplotlib.pyplot as plt  %matplotlib inline # 使图形可以直接在notebook上显示

  • 首先画一个最基本的图形
plt.plot([1,2,3,4,5],[1,4,9,16,25]) # plot方法是绘制图形,第一个参数是x轴的值,第二个参数是对应的y轴的值  plt.xlabel('this is x-axis',fontsize = 16) #xlabel是指定x轴的名字 fontsize是指定字体的大小  plt.ylabel('this is y-axis',fontsize = 16)

  • 不同类型的线条的字符参数;不同颜色的字符参数

  • 给plot方法传入指定的线条和颜色参数
plt.plot([1,2,3,4,5],[1,4,9,16,25],'gv') #其中‘gv’中的g代表green绿色,v代表下三角形  plt.xlabel('xlabel',fontsize = 16)  plt.ylabel('ylabel',fontsize = 16)

  •  除了上面这种给参数的方法外,还可以分开来给参数
plt.plot([1,2,3,4,5],[1,4,9,16,25],'+',color='r') # 其中的‘+’代表加号点,r代表red红色  plt.xlabel('xlabel',fontsize = 16)  plt.ylabel('ylabel',fontsize = 16)

 

  • 下面我们来绘制多条线
tang_numpy = np.arange(0,10,0.5) # 生产从0到10间隔为0.5的等差序列  # 然后连续绘制三条线,调用三次plot方法  plt.plot(tang_numpy,tang_numpy,'r--')  plt.plot(tang_numpy,tang_numpy*2,'bs')  plt.plot(tang_numpy,tang_numpy*3,'go')

  •  也可以只使用一次plot方法绘制三条线,得到的结果是一样的
plt.plot(tang_numpy,tang_numpy,'r--',          tang_numpy,tang_numpy*2,'bs',          tang_numpy,tang_numpy*3,'go')

 

  • 接下来绘制一个余弦函数,给定比较多的参数,注释会解释每个参数的作用
x = np.linspace(-10,10) #线条的范围  y = np.sin(x)  # linewidth参数是线条的宽度,color是颜色,linestype是线条的类型,marker是标记的类型,makercolor是标记的颜色,markersize是标记大小,alpha是透明度  plt.plot(x,y,linewidth=5, color='b',linestyle='-',marker = 'o',markerfacecolor='r',markersize = 8,alpha = 0.4)

  • 子图,一个图形中可以由多个子图组合而成,可以吧一整个图看成是一个矩阵,而其中的子图是该矩阵的各个元素
# 211 表示一会要画的图是2行一列的 最后一个1表示的是子图当中的第1个图  plt.subplot(211)  plt.plot(x,y,color='r')    # 212 表示一会要画的图是2行一列的 最后一个1表示的是子图当中的第2个图  plt.subplot(212)  plt.plot(x,y,color='b')

 

# 211 表示一会要画的图是1行2列的 最后一个1表示的是子图当中的第1个图  plt.subplot(121)  plt.plot(x,y,color='r')    # 212 表示一会要画的图是1行2列的 最后一个1表示的是子图当中的第2个图  plt.subplot(122)  plt.plot(x,y,color='b')

 

# 321 表示一会要画的图是3行2列的 最后一个1表示的是子图当中的第1个图  plt.subplot(321)  plt.plot(x,y,color='r')  # 321 表示一会要画的图是3行2列的 最后一个4表示的是子图当中的第4个图  plt.subplot(324)  plt.plot(x,y,color='b')

  • 给图加上一些文字注释
plt.plot(x,y,color='b',linestyle=':',marker = 'o',markerfacecolor='r',markersize = 10)  plt.xlabel('x:---')  plt.ylabel('y:---')  plt.title('this is the title:---')  plt.text(0,0,'this is the text') #(0,0)是text的位置  plt.grid(True) #这个是网格  # xy是箭头指向的位置,xytext是注释的位置,arrowprops是指定箭头的属性  plt.annotate('tangyudi',xy=(-5,0),xytext=(-2,0.3),arrowprops = dict(facecolor='red',shrink=0.05,headlength= 20,headwidth = 20))

  • 设置图片的风格

x = np.linspace(-10,10)  y = np.sin(x)  plt.style.use('dark_background') #给图片指定风格  plt.plot(x,y)

  •  绘制柱状图
np.random.seed(0) #设置随机数种子  x = np.arange(5)  y = np.random.randint(-5,5,5)  fig,axes = plt.subplots(ncols = 2) # 有两列的子图  v_bars = axes[0].bar(x,y,color='blue')  #axes[0]代表第一个子图  h_bars = axes[1].barh(x,y,color='red')  axes[0].axhline(0,color='grey',linewidth=2) #加一条横线  axes[1].axvline(0,color='grey',linewidth=2) #加一条竖线

fig,ax = plt.subplots()  v_bars = ax.bar(x,y,color='lightblue')  # 让值小于0的柱状颜色为green  for bar,height in zip(v_bars,y):   # bar,height为柱状的高度值      if height < 0:          bar.set(edgecolor = 'darkred',color = 'green',linewidth = 3)  ax.axhline(0,color = 'red') # 0的地方加一条水平线