Python -- Matplotlib库的使用
Posted 衍生星球
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python -- Matplotlib库的使用相关的知识,希望对你有一定的参考价值。
Matplotlib库的使用
要点:matplotlib是提供数据绘图功能的第三方库,其pyplot子库主要用于实现各种数据展示图形的绘制。
1. matplotlib.pyplot库概述
matplotlib.pyplot是matplotlib的子库,引用方式如下:
>>>import matplotlib.pyplot as plt
为了正确显示中文字体,请用以下代码更改默认设置,其中’SimHei’表示黑体字。
>>>import matplotlib
>>>matplotlib.rcParams['font.family']='SimHei'
>>>matplotlib.rcParams['font.sans-serif']_=['SimHei']
常见字体名称的中英文对照
字体英文表示 | 字体名称 |
---|---|
SimSun | 宋体 |
SimHei | 黑体 |
KaiTi | 楷体 |
Microsoft YaHei | 微软雅黑 |
LiSu | 隶书 |
FangSong | 仿宋 |
YouYuan | 幼圆 |
STSong | 华文宋体 |
STHeiti | 华文黑体 |
Apple LiGothic Medium | 苹果丽中黑 |
matplotlib库由一系列有组织有隶属关系的对象构成,这对于基础绘图操作来说显得过于复杂。因此,matplotib提供了一套快捷命令式的绘图接口函数,即pyplot子模块。pyplot 将绘图所需要的对象构建过程封装在函数中,对用户提供了更加友好的接口。pyplot模块提供一批预定义的绘图函数,大多数函数可以从函数名辨别它的功能。
2. matplotlib.pyplot库解析
使用plt代替matplotlib.pyplot。plt子库提供了一批操作和绘图函数,每个函数代表对图像进行的一个操作,比如创建绘图区域、添加标注或者修改坐标轴等
plt子库中包含了4个与绘图区域有关的函数。
函数 | 描述 |
---|---|
plt.figure(figsize=None, facecolor=None) | 创建一个全局绘图区域 |
plt.axes(rect,axisbg=‘w’) | 创建一个坐标系风格的子绘图区域 |
plt.subplot(nrows, ncols,plot_number) | 在全局绘图区域中创建一个子绘图区域 |
plt.subplots_adjust() | 调整子绘图区域的布局 |
使用figureO函数创建一个全局绘图区域,并且使它成为当前的绘图对象,figsize
参数可以指定绘图区域的宽度和高度,单位为英寸。鉴于figure(O函数参数较多,这里采用指定参数名称的方式输入参数。
>>> plt.figure(figsize=(8,4))
绘制图像之前也可不调用figureO函数创建全局绘图区域,此时,plt子库会自动创建一个默认的绘图区域。显示绘图区域的代码如下:
>>>plt.figure(figsize=(8,4))
>>>plt.show()
subplot()用于在全局绘图区域内创建子绘图区域,其参数表示将全局绘图区域分成nrows行和ncols列,并根据先行后列的计数方式在plot_number位置生成一个坐标系,实例代码如下,3个参数关系如图9.3所示。其中,全局绘图区域被分割成3×2的网格,其中,在第4个位置绘制了一个坐标系。
>>>plt.subplot(324)
>>>plt.show()
效果如下:
axes()默认创建一个subplot(111)坐标系,参数rec=[left,bottom,width,height]中4个变量的范围都为[0,1],表示坐标系与全局绘图区域的关系;axisbg指背景色,默认为white。
subplotO函数的参数关系
>>> plt.axes([0.1,0.1,0.7,0.3],axisbg='y')
>>>>> plt.show()
plt子库提供了一组读取和显示相关的函数,用于在绘图区域中增加显示内容及读入数据,这些函数需要与其他函数搭配使用。
plt库的读取和显示函数(共6个)
函数 | 描述 |
---|---|
plt.legend() | 在绘图区域中放置绘图标签(也称图注) |
plt.show() | 显示创建的绘图对象 |
plt.matshow() | 在窗口显示数组矩阵 |
plt.imshow() | 在axes 上显示图像 |
plt.imsave() | 保存数组为图像文件 |
plt.imread() | 从图像文件中读取数组 |
pyplot模块提供了17个用于绘制“基础图表”的常用函数。
描述 | 操作 |
---|---|
plt.polt(x, y, label, color, width) | 根据x、y数组绘制直、曲线 |
plt.boxplot(data, notch, position) | 绘制一个箱型图(Box-plot) |
plt.bar(left, height, width, bottom) | 绘制一个条形图 |
plt.barh(bottom, width,height, left) | 绘制一个横向条形图 |
plt.polar(theta, r) | 绘制极坐标图 |
plt.pie(data,explode) | 绘制饼图 |
plt.psd(x, NFFT=256, pad_to, Fs) | 绘制功率谱密度图 |
plt.specgram(x, NFFT=256,pad_to, F) | 绘制谱图 |
plt.cohere (x, y, NFFT=256, Fs) | 绘制X-Y的相关性函数 |
plt.scatter() | 绘制散点图(x、y是长度相同的序列) |
plt.step(x, y, where) | 绘制步阶图 |
plt.hist(x,bins,normed) | 绘制直方图 |
plt.contour(X,Y,Z,N) | 绘制等值线 |
plt.vlines() | 绘制垂直线 |
plt.stem(x,y,linefmt,markerfmt,basefmt) | 绘制曲线每个点到水平轴线的垂线 |
plt.plot_date() | 绘制数据日期 |
plt.plotfile() | 绘制数据后写入文件 |
plot()函数是用于绘制直线的最基础的函数,调用方式很灵活,x和y可以是numpy计算出的数组,并用关键字参数指定各种属性。其中,label表示设置标签并在图例(legend)中显示,color表示曲线的颜色,linewidth表示曲线的宽度。在字符串前后添加“$”符号,matplotlib会使用其内置的latex引擎绘制数学公式。
【例1】绘制基本的三角函数。
在坐标系中绘制基本的三角函数,代码如下,绘制效果如图9.4所示。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 6, 100)
y = np.cos(2 * np.pi * x) * np.exp(-x)+0.8
plt.plot(x, y, 'k', color='y', linewidth=5, linestyle="-")
plt.show()
效果如下:
plt库有两个坐标体系:图像坐标和数据坐标。图像坐标将图像所在区域左下角视为原点,将x方向和y方向长度设定为1。整体绘图区域有一个图像坐标,每个axes()和 subplot()函数产生的子图也有属于自己的图像坐标。axes()函数参数 rect 指当前产生的子区域相对于整个绘图区域的图像坐标。数据坐标以当前绘图区域的坐标轴为参考,显示每个数据点的相对位置,这与坐标系里面标记数据点一致。
下表给出了与plt库的坐标轴设置相关的函数。
函数 | 描述 |
---|---|
plt.axis(‘v’,'off,‘equal’,‘scaled’,‘tight’,‘image’) | 获取设置轴属性的快捷方法 |
plt.xlim(xmin, xmax) | 设置当前x轴取值范围 |
plt.ylim(ymin,ymax) | 设置当前y轴取值范围 |
plt.xscale() | 设置x轴缩放 |
plt.yscale() | 设置y轴缩放 |
plt.autoscale() | 自动缩放轴视图的数据 |
plt.text(x,y,s,fontdic,withdash) | 为axes图轴添加注释 |
plt.thetagrids(angles,labels, fmt, frac) | 设置极坐标网格theta的位置 |
plt.grid(on/off) | 打开或者关闭坐标网格 |
>>>plt.plot([1,2,6],[1,2,1])
>>>>plt.axis()#获得当前坐标轴范围
(1.0,4.0,1.0,3.0)
>>>plt.axis([0,5,0,8]) #4个变量分别是[xmin,xmax,ymin,ymax]
>>>plt.show()#请读者观察输出结果
下表给出了13个设置坐标系标签的相关函数。
函数 | 描述 |
---|---|
plt.figlegend(handles,label,loc) | 为全局绘图区域放置图注 |
plt.legend() | 为当前坐标图放置图注 |
plt.xlabel(s) | 设置当前x轴的标签 |
plt.ylabel(s) | 设置当前y轴的标签 |
plt.xticks(array,‘a’,‘b’,‘c’) | 设置当前x轴刻度位置的标签和值 |
plt.yticks(array,‘a’,‘b’,‘c’) | 设置当前y轴刻度位置的标签和值 |
plt.clabel(cs,v) | 为等值线图设置标签 |
plt.get_figlabels() | 返回当前绘图区域的标签列表 |
plt.figtext(x, y, s, fontdic) | 为全局绘图区域添加文字 |
plt.title() | 设置标题 |
plt.suptitle() | 为当前绘图区域添加中心标题 |
plt.text(x, y, s,fontdic, withdash) | 为 坐标图轴添加注释 |
plt.annotate(note, xy, xytext, xycoords, textcoords, arrowprops) | 用箭头在指定数据点创建一个注释或一段文本 |
【例2】绘制一个带标签的坐标系,代码如下,绘制效果如下图所示。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
plt.plot([1, 2, 6], [1, 2, 1])
plt.title("坐标系")
plt.xlabel('时间()')
plt.ylabel('范围(m)')
plt.xticks([1,2,3,4,5],[r'$\\pi/3$',r'$2\\pi/3$',r'$\\pi/$',r'$4\\pi/3$',r'$5\\pi/3$'])
plt.show()
效果如下:
plt库提供了3个区域填充函数,对绘图区域填充颜色。
函数 | 描述 |
---|---|
fill(x,y,c,color) | 填充多边形 |
fill_between(x, y1, y2, where, color) | 填充两条曲线围成的多边形 |
fill_betweenx(y, x1, x2, where, hold) | 填充两条水平线之间的区域 |
【例3】带局部阴影的坐标系。
绘制一个带局部阴影的坐标系,代码如下,绘制效果如图9.6所示。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 1000)
y = np.cos(2*np.pi*x) * np.exp(-x)+0.8
plt.plot(x, y, 'k', color='y', label="$exp-decay$", linewidth=3)
plt.axis([0, 6, 0, 1.8])
ix = (x>0.8) & (x<3)
plt.fill_between(x, y, 0, where = ix,
facecolor = 'grey', alpha=0.25)
plt.text(0.5*(0.8+3), 0.2, r"$\\int_a^b f(x)\\mathrmdx$",
horizontalalignment='center')
plt.legend()
plt.show()
效果如下:
Python基础——matplotlib库的使用与绘图可视化
1、matplotlib库简介:
Matplotlib 是一个 Python 的 2D绘图库,开发者可以便捷地生成绘图,直方图,功率谱,条形图,散点图等。
2、Matplotlib 库使用:
注:由于深度学习实践中常常会使用绘图,主要包括生成绘图、散点图,实践中也主要关注此点。
运行环境:Python3
(1)生成绘图
import numpy as np # 导入NumPy库 import matplotlib.pyplot as plt # 导入绘图库 import matplotlib if __name__ == "__main__": #simkai.ttf 是电脑控制面板里字体的一种,这里是楷体 chinese =matplotlib.font_manager.FontProperties(fname=\'C:\\Windows\\Fonts\\simkai.ttf\') x1 = np.arange(-5.0, 5.0, 0.02) y1 = np.sin(x1) x2 = np.arange(-5.0, 5.0, 0.02) y2 = np.cos(x2) plt.figure(1) #作图1 plt.subplot(211) #作子图 plt.plot(x1, y1, \'r\',label=u\'正弦信号\',linewidth=3) #作出x1和y1图,依次设置颜色、标签名称、线性大小 plt.legend(prop=chinese) #支持中文 plt.axis([-2.5, 2.5, -1, 1]) #设置x、y轴范围 plt.subplot(212) #作子图 plt.plot(x2, y2, \'go\',label=u\'余弦信号\',linewidth=1) #作出x2和y2图,依次设置颜色、标签名称 plt.legend(prop=chinese) #支持中文 plt.axis([-2.5, 2.5, -1, 1]) #设置x、y轴范围 plt.show() #显示作图结果
(2)散点图
注:data.txt 文件下载
链接:https://pan.baidu.com/s/1GQDuBKaHVyxGcEVvaVafAA
提取码:6cxo
import numpy as np import matplotlib.pyplot as plt if __name__ == "__main__": myDat = np.loadtxt(\'data.txt\') #加载数据文件,数据间的分隔符为空格 xMat = np.mat(myDat)[:,0] yMat = np.mat(myDat)[:,1] plt.figure() #作图 #作原始数据散点图 plt.scatter(xMat[:,0].flatten().A[0],yMat[:,0].flatten().A[0],color = \'r\',label=\'data\',marker = \'o\') #依次设置散点的颜色、形状 plt.legend(loc=\'lower right\') #指定标签位置 plt.show() #显示作图结果
参考文献
[1] https://blog.csdn.net/u014453898/article/details/73395522
以上是关于Python -- Matplotlib库的使用的主要内容,如果未能解决你的问题,请参考以下文章
Python 之 Numpy库以及Matplotlib库的学习