Python matplotlib模块常用的简单绘图

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

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值