Python 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
转载请加链接