欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python---MatPlotlib库的实用总结

程序员文章站 2022-03-11 22:59:07
Matplotlib和numpy库一样,都是python的第三方库,numpy库侧重于数据的统计,计算,分析,详细看这里;Matplotlib库则侧重于图形的绘制,将数据可视化,支持许多种图像的绘制,具体看这里。Matplotlib库支持的功能太多,一般情况只使用其中的pyplot子库就已足够,具体使用方法如下:import Matplotlib.pyplot as plt初识MatPlotlib.pyplot上初中时,学的最简单的图形是什么?没错,坐标系,学习pyplot,第一步先学会画一个平面...

Matplotlib和numpy库一样,都是python的第三方库,numpy库侧重于数据的统计,计算,分析,详细看这里;
Matplotlib库则侧重于图形的绘制,将数据可视化,支持许多种图像的绘制,具体看这里。Matplotlib库支持的功能太多,一般情况只使用其中的pyplot子库就已足够,具体使用方法如下:

import Matplotlib.pyplot as plt

初识MatPlotlib.pyplot

上初中时,学的最简单的图形是什么?没错,坐标系,学习pyplot,第一步先学会画一个平面坐标系,利用plot函数可以做到这一点

plt.plot(x,y,format_string,**kwargs)

其中:

  • x,y:代表所绘制的数据的x,y轴,可以为列表或数组
  • format_string:控制曲线的格式字符串(可以省略)
  • kwargs:plot函数可以同时绘制多条曲线,只需在后面接上相同的参数(x,y,format_string)就行

format_string:可控制曲线的颜色,风格,标记字符,下图列出了常用的几个,不用记忆,需要的时候查一下表就行:
Python---MatPlotlib库的实用总结
Python---MatPlotlib库的实用总结
Python---MatPlotlib库的实用总结
这里举一个plot的使用示例:

a=np.arrage(10)
plt.plot(a,a*1.5,'go-',a,a*2.5,'rx',a,a*3.5,'*',a,a*4.5,'b-.')

这条程序绘制出的图形如下:
Python---MatPlotlib库的实用总结

使用技巧: 当绘制一条曲线时,可以省略x轴,图像将y轴数据(列表或数组)的下标当作x轴,
但是当绘制多条曲线时,不允许x轴的省略


加上注释

仅仅有图像是不够的,这个图象表示了什么,它的x,y轴代表什么含义?我们需要用注释来表明图像的意义,pyplot中提供了许多文本显示函数,常用的有以下几种:
Python---MatPlotlib库的实用总结
那这些函数怎么用呢?前三者用法相同,这里举一个例子

a=np.arange(0,5,0.5)
plt.plot(a,a**2,'r--')

plt.xlabel('xlabel',fontsize=15,color='green')
plt.ylabel('ylabel',fontsize=15,color='yellow')
plt.title('title $y=coss(2\pi x)$',fontsize=25)
plt.text(2,1,r'$\mu=100$',fontsize=15)

plt.grid(True)
plt.show()

其中,由两个$包括起来的部分是Latex格式语句,这里不赘述;
text函数中,前两个参数分别表示文本的横纵坐标

除这些外,表中还提到了annotate函数,使用方法如下:

plt.annotate(s,xy=arrow_crd,xytexte=text_crd,arrowprops=dict)

这些参数中:

  • arrow_crd:箭头的坐标
  • text_crd:注释的坐标
  • dict:表示一系列的属性
    举个实例:
    Python---MatPlotlib库的实用总结

让它更好懂!-----来点中文

pyplot默认情况下,不支持中文的标注,这可让英文渣大为头疼,接下来我们学习:如何让它支持中文注释。

reParams

想让pyplot支持中文注释,需要用到rcParams这个函数,它可以指定中文的字体,字体风格(正常,斜体),以及字体大小,使用的示例如下:

import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['fontsize']=20

以上代码中,SimHei代表黑体,在写过这条代码后,就可以在x,y轴等地方添加中文的注释,常用的字体有如下几种:
Python---MatPlotlib库的实用总结

此外,rcParams包含以下这些属性:
Python---MatPlotlib库的实用总结

fontproperties

在以上的方法中,使用rcParams可以设置全局的字体,但如果只想改变某个部分的字体呢?这时就需要用到fontproperties属性。
举例:

a=np.arange(0.0,5.0,0.02)
plt.xlabel('这里是横轴',fontproperties='SimHei',fontsize=20)
ply.ylabel('这里是纵轴',fontperoerties='SimHei',fontsize=20)
plt.plot(a,a**2)
plt.show

漂亮的排版----多区域绘图

常常,我们会想在一张纸上画许多个互不关联的图像,这些图像有的占用了左半边,有时由占用了一整行,pyplot中也可以做到这种效果----subplot2grid()
Python---MatPlotlib库的实用总结

subplot2grid函数,首先将画图的区域分成多个网格,利用对不同的网格选择,合并,便达到图中的效果,和Excel中的合并单元格是同样的原理。
例如:

plt.subplot2grid((3,3),(1,0),colspan=2,rowspan=2)
  • 第一个参数:表示将绘图的区域分成3*3的网格(注意,网格下标从0开始)
  • 第二个参数:选中第二行,第一列的网格
  • 第三个参数:合并2个列
  • 第四个参数:同上类推
    达到以下的效果:
    Python---MatPlotlib库的实用总结
    虽然这个函数能实现漂亮的排版,但使用起来有些麻烦,比如:已经有了plt.subplot2grid((3,3),(1,0),colspan=2,rowspan=2)这条语句,若想选中其他区域(如0,0),仍需要再写一遍plt.subplot2grid((3,3),(0,0)),为了简化这个麻烦,可以使用另一个函数----GridSpec()

GridSpec函数是位于MatPlotlib中GridSpec子库中的一个函数,它的使用原理同上,但在划分网格后,不需要每次重新划分,直接选
中便可使用,举例如下:
Python---MatPlotlib库的实用总结

本文地址:https://blog.csdn.net/A_BIG_DREAMER/article/details/107636861

相关标签: python