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

Python matplotlib模块常用的简单绘图

程序员文章站 2022-03-21 14:23:19
...
matplotlib 是面向对象的绘图,每个元素都有一个对象与之对应

为了绘图方便,matplotlib提供matplot模块,将面向对象的绘图库包装成只使用函数的api

一  使用时先导入matplotlib包

from matplotlib import pyplot as plt

%matplotlib命令可以将matplotlib的图表直接嵌入到Notebook之中,inline表示将图表嵌入到Notebook中

get_ipython().magic(u'matplotlib inline')

y = sin(x),y=cos(x**2)的简单示例

x = np.linspace(0,10,1000)
y = np.sin(x)
z = np.cos(x**2) 
常用的一些plt.方法
plt.figure(figsize=(8,4),dpi =200)#新建一个figure(图表)并将他作为当前figure对象
plt.plot(x,y,label = '$sin(x)$',color='g',linewidth = 2)#label将在图示中显示,如前后有$,则将其转化为数学公式,linewidth 可缩写为lw
plt.plot(x,z,"b--",label = '$cos(x)$')#"b--"b代表蓝色,--代表虚线
plt.xlabel('Times')
plt.ylabel('Volt')
plt.legend()#显示图示
plt.show()
plt.savefig('/home/fangsh/dlym/test.png',dpi = 120)#设置分辨率为120,本例figsize=(8,4),所以图像分辨率是960x480
#plt.savefig 与plt.imsave()的区别
#plt.savefig(outp_dir)保存当前的图表fig
#plt.imsave(outp_dir,img)保存img

二 pyplot模块保存了当前图表以及当前子图的信息
        可通过gcf()和gca()获得这两个对象 gcf是gir current figure的缩写,gca是get current axes的缩写
 pyplot大多函数都是对当前的对象(figure或者axes)进行处理,如plot(),xlabel(),savefig()
可调用对象的属相设置方法set_*()或者plot模块的属相设置函数setp()来设置属性
同样可通过对象的get_*()和plot模块的getp()老获取对象属性

x = np.arange(0,5,0.1)
plt.figure(figsize=(4,3))
line = plt.plot(x,np.sin(x),x,np.cos(x))[1]#plot返回一个元素类型为line2D的列表(每个元素代表一个曲线)
line.set_alpha(0.5)
plt.setp(line,color="b",lw=5)
print line.get_color(),plt.getp(line,'axes')#getp()指定属性名只返回对象的某个属性,不指定属性名输出对象的所有属性和值
三  用subplot绘制多子图
        subplot(numrows,numcols,plotnum)整个绘图区域被分为numrow行和numcols列,plot指定所创建的axes对象的区域
如果numrows,numcols,plotnum都小于10,可将是三个数写成一个整数。
subplot所创建的对象,可用变量保存,用sca()函数可选择使之成为当前axes对象。
plt.figure(2)来选择要操作的图表序号
fig,axes = plt.subplots(2,3)#subplots同时创建多个子图,并返回当前的figure(图表)和子图列表
[a,b,c],[d,e,f] = axes

可调用subplot2grid()进行更复杂的表格布局。类似与excel
用法与参数说明“
subplot2grid(shape,rowspan=1.colspan=1,**kwargs)
shape表格形状的元祖,loc为子图左上角的坐标(行,列),rowspan.colspan子图所在的行数列数

fig = plt.figure(figsize=(6,6))
ax1= plt.subplot2grid((3,3),(0,0),colspan=3)
ax2 = plt.subplot2grid((3,3),(1,0),rowspan=2,colspan=2)
ax3 = plt.subplot2grid((3,3),(1,2),rowspan=2)

四 散点图的绘制

plt.figure(figsize=(8,4))
x = np.random.random(100)
y = np.random.random(100)
plt.scatter(x,y,s=x*1000,c=y,marker=(5,1),alpha=0.8,lw=3,facecolor='none')
s设置大小,c颜色可以是一维数组,也可以是二维数组,表示每个点的RGB颜色
marker设置点的形状是一个元祖(),第一个代表多边形的边数,第二个代表多边形的形状

alpha设置透明度,lw是线宽,facecolors ='none'代表三列点没有填充色

五 等高图的绘制

plt.contourf(x,y,z)和plt.contour(x,y,z)用于绘制三维图形,x,y是等长的一维数组,z为二维数据表示(x,y)处的函数映射值。

plt.contour(x,y,z)不同的分割线,plt.contourf(x,y,z)会在分割线之间填充颜色,常用于机器学习模型的可视化,如绘制决策边界。

六 最后,可以为图表fig添加单击事件

当'key_press_event'事件发生时,执行on_key_press函数

fig.canvas.mpl_connect('key_press_event',on_key_press)
支持的事件
 button_press_event          按下鼠标
 button_release_event     释放鼠标按键
 key_press_event        按下键盘按键
 key_release_event       释放键盘按键
 figure_leave_event      鼠标移出图表
 axes_enter_enevt       鼠标移入子图
 axes_leave_enevt       鼠标移出子图
fig.canvas.draw可以重新绘制图表
fig.canvas.draw
转载请加链接

上一篇: EL自定义函数

下一篇: 常用函数