利用matplotlib+numpy绘制多种绘图的方法实例
前言 matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。本文将以例子的形式分析matplot中支持的,分析中常用的几种图。其中包括填充图、散点图(scatter plots)、. 条形图(bar plots)、等高线图(contour plots)、 点阵图和3D图,下面来一起看看详细的介绍: 一、填充图 参考代码 from matplotlib.pyplot import * x=linspace(-3,3,100) y1=np.sin(x) y2=np.cos(x) fill_between(x,y1,y2,where=(y1>=y2),color='red',alpha=0.25) fill_between(x,where=(y<>y2),color='green',alpha=0.25) plot(x,y1) plot(x,y2) show() 简要分析 这里主要是用到了 当然 效果图 二、散点图(scatter plots) 参考代码 from matplotlib.pyplot import * n = 1024 X = np.random.normal(0,1,n) Y = np.random.normal(0,n) T = np.arctan2(Y,X) scatter(X,Y,s=75,c=T,alpha=.5) xlim(-1.5,1.5) ylim(-1.5,1.5) show() 简要分析 首先介绍一下numpy 的 然后是 接下来用到了绘制散点图的 至于 最后设置下坐标范围就好了。 效果图 三、条形图(bar plots) 参考代码 from matplotlib.pyplot import * n = 12 X = np.arange(n) Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n) Y2 = (1-X/float(n)) * np.random.uniform(0.5,n) bar(X,+Y1,facecolor='#9999ff',edgecolor='white') bar(X,-Y2,facecolor='#ff9999',edgecolor='white') for x,y in zip(X,Y1): text(x+0.4,y+0.05,'%.2f' % y,ha='center',va= 'bottom') for x,Y2): text(x+0.4,-y-0.05,va= 'top') xlim(-.5,n) xticks([]) ylim(-1.25,+1.25) yticks([]) show() 简要分析 注意要手动导入pylab包,否则会找不到bar。。。 首先用numpy的 其次用numpy的 然后就是bar函数的使用了,基本用法也和之前的plot、scatter类似,传入横纵坐标和一些修饰性参数。 接着我们需要用 最后调整下坐标范围,并且取消横纵坐标上的刻度以保持美观即可。 至于 效果图 四、等高线图(contour plots) 参考代码 from matplotlib.pyplot import * def f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2) n = 256 x = np.linspace(-3,n) y = np.linspace(-3,n) X,Y = np.meshgrid(x,y) contourf(X,f(X,Y),8,alpha=.75,cmap=cm.hot) C = contour(X,colors='black',linewidth=.5) clabel(C,inline=1,fontsize=10) show() 简要分析 首先要明确等高线图是一个三维立体图,所以我们要建立一个二元函数f,值由两个参数控制,(注意,这两个参数都应该是矩阵)。 然后我们需要用numpy的 接着就用到 随后就是 最后就是用clabel函数来在等高线图上表示高度了,传入之前的那个 效果图 五、点阵图 参考代码 from matplotlib.pyplot import * def f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2) n = 10 x = np.linspace(-3,3.5*n) y = np.linspace(-3,3.0*n) X,y) Z = f(X,Y) imshow(Z,interpolation='nearest',cmap='bone',origin='lower') colorbar(shrink=.92) show() 简要分析 这段代码的目的就是将一个矩阵直接转换为一张像照片一样的图,完整的进行显示。 前面的代码就是生成一个矩阵Z,不作解释。 接着用到了 最后用 效果图 六、3D图 参考代码 import numpy as np from pylab import * from mpl_toolkits.mplot3d import Axes3D fig = figure() ax = Axes3D(fig) X = np.arange(-4,4,0.25) Y = np.arange(-4,0.25) X,Y = np.meshgrid(X,Y) R = np.sqrt(X**2 + Y**2) Z = np.sin(R) ax.plot_surface(X,Z,rstride=1,cstride=1,cmap=plt.cm.hot) ax.contourf(X,zdir='z',offset=-2,cmap=plt.cm.hot) ax.set_zlim(-2,2) show() 简要分析 有点麻烦,需要用到的时候再说吧,不过原理也很简单,跟等高线图类似,先画图再描线,最后设置高度,都是一回事。 效果图 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |