matplotlib中文手册pdf,matplotlib官方手册
Python-Matplotlib可视化(十)——文章详解绘制3D统计图首先,绘制2D图3D标量场绘制3D曲面3D坐标轴绘制2D图3D条形图系列链接。
序
Matplotlib是Python的绘图库。它提供了一组类似于matlab的命令API,可以生成具有所需发布质量级别的图形。用于创建3D图形的API与2D API非常相似。我们学习了绘制一系列二维统计图,但是在统计图上增加维度可以显示更多的信息。此外,在进行常规报告和演讲时,3D图形也可以吸引更多的注意力。在本系列的最后一部分,我们考虑使用Matplotlib绘制三维统计图。
三维散点图三维散点图的创建方法与二维散点图的创建方法基本相同。
importnumpyasnpfrommpl _ toolkits。MP lot 3d importaxes 3 importmatplotlib . pyplotasplt # dataset generation a,b,c=10。dt=1e-2):x _ dt=NP . array([a *(x(1)-x)0),x(0)(b-x)2)))x[0]* x[1]-1)Lorenz _ map(x)# plotting fig=PLT . figure)ax=fig . GCA)projection= 3d )ax . set _ xlabel) xaxis ax
提示:如果在按住鼠标左键的同时移动鼠标,3d图形将会旋转。
要使用Matplotlib进行3D操作,必须先导入Matplotlib的3D扩展。
对于from mpl _ toolkits . mplott 3 dimportaxes 3D 3D绘图,必须创建一个图形实例并添加一个轴3D实例。
fig=PLT . figure(ax=fig . GCA)projection= 3d )后,三维散点图的绘制方法与二维散点图完全相同。
Ax.scatter (points [:0],points [:1],points [:2],zdir=z ,c=c )提示:axes3d还可以在3d图表中使用2D图表批注,如set_title(,set_xlabel,set_ylabel等。
还可以使用Axes3D.scatter()的可选参数来更改统计形状和颜色。
ax.scatter(点[ :0 ],点[ :1 ],点[ :2 ],zdir=z ,c=c ,marker=s
三维图表类似于在三维空间中绘制散点图。要绘制三维图表,必须设置Axes3D实例并调用其plot()方法。
importnumpyasnpfrommpl _ toolkits。MP lot 3d importaxes 3 importmatplotlib . pyplotasplt # dataset generation a,b,c=10。dt=1e-2):x _ dt=NP . array([a *(x(1)-x)0),x(0)(b-x)2)))x[0]* x[1]-1)Lorenz _ map(x)# plotting fig=PLT . figure))ax=fig . GCA)projection= 3d )ax . set _ zla be(xa xlabel))
l(Z轴)ax.set_title(洛伦兹吸引子a=%0.2f b=%0.2f c=%0.2f % (a,b,c))ax.plot(points[:0],points[:1],points[:2],c=c)plt.show()
3D标量场到目前为止,我们看到的3D绘制方法和相应的2D绘制方法类似,但是也有很多独特的3D绘制功能,比如将2D标量场绘制成3D曲面:
import numpy as NP from matplotlib import cm from mpl _ toolkits . mplot 3d import axes 3d import matplotlib . py plot as pltx=NP . Lin space(-3,3,256)y=np.linspace(-3,3,256)x_grid,y_grid=np.meshgrid(x,y)z=NP . sinc(NP . sqrt(x _ grid * * 2y _ grid * * 2))fig=PLT . figure()ax=fig . GCA(projection=.
可以看到表面的线条有突出的颜色。如果不想看到显示在3D表面上的曲线颜色,可以使用plot_surface()添加可选参数:
Ax.plot_surface (x _ grid,y _ grid,z,cmap=cm.viridis,线宽=0,抗锯齿=false)。同样,我们只能保留曲线颜色,曲面不使用其他颜色。这也可以通过plot _ surface()的可选参数来完成:
import numpy as NP from matplotlib import cm from mpl _ toolkits . mplot 3d import axes 3d import matplotlib . py plot as pltx=NP . Lin space(-3,3,256)y=np.linspace(-3,3,256)x_grid,y_grid=np.meshgrid(x,y)z=NP . sinc(NP . sqrt(x _ grid * * 2y _ grid * * 2))fig=PLT . figure()ax=fig . GCA(projection=.
而如果我们想消除曲面,只使用线框来绘制,我们可以使用plot_wireframe()函数:
ax.plot_wireframe(x_grid,y_grid,z,cstride=10,rstride=10,color=c )提示:绘图_线框()参数与绘图_表面()相同,使用两个可选参数rstride和cstride用于令Matplotlib跳过x和y轴上指定数量的坐标,用于减少曲线的密度。
绘制三维(三维的缩写)曲面在前述方法中,使用绘图_表面()来绘制标量:即f(x,y)=z形式的函数,但Matplotlib也能够使用更通用的方式绘制三维曲面:
从mpl _ toolkits导入numpy作为NP。mplot 3d导入轴3d导入matplotlib。py绘制为PLT # Generate torus mesh angle=NP。Lin空间(0,2 * NP,32)theta,phi=np.meshgrid(angle,angle)r,r_w=.25,1。x=(r _ w r * NP。cos(phi))* NP。cos()y=(r _ w r * NP。cos(phi))* NP。正弦()
同样可以使用绘图_线框()替换对绘图_表面()的调用,以便获得圆环的线框视图:
ax.plot_wireframe(x,y,z,edgecolor=c ,rstride=2,cstride=1)
在三维(三维的缩写)坐标轴中绘制2D图形注释三维图形的一种有效方法是使用二维图形:
从mpl _ toolkits导入numpy作为NP。mplot 3d导入轴3d导入matplotlib。py曲线为pltx=NP。Lin space(-3,3,256)y=np.linspace(-3,3,256)x_grid,y_grid=np.meshgrid(x,y)z=NP。exp(-(x _ grid * * 2y _ grid * * 2))u=NP。exp(-(x * * 2))fig=PLT。图()ax=图GCA(投影=。color= c )ax。plot _ surface(x _ grid,y_grid,z,color=b)plt.show() Axes3D实例同样支持常用的二维渲染命令,如绘图():
ax.plot(x,u,zs=3,zdir=y ,lw=2,color=m) Axes3D实例对绘图()的调用有两个新的可选参数:
zdir:用于决定在哪个平面上绘制2D绘图,可选值包括x、y或z;
zs:用于决定平面的偏移。
因此,要将二维图形嵌入到三维图形中,只需将二维原语用于Axes3D实例,同时使用可选参数,zdir和zs,来放置所需渲染图形平面。
接下来,让我们实际查看下在三维(三维的缩写)空间中堆叠2D条形图的示例:
从matplotlib导入numpy作为NP导入cm导入matplotlib。mpl _ toolkits中的颜色列。mplot 3d导入轴3d导入matplotlib。py绘图为PLT #数据生成alpha=1 ./np.linspace(1,8,5)t=np.linspace(0,5,16)t_grid,a_grid=np.meshgrid(t,alpha)data=NP。exp(-t _ grid * a _ grid)# plotting fig=PLT。图()ax=图. GCA(projection= 3d )cmap=cm .标量maptable(col . Normalize(0,len(alpha)),cm.viridis)for i,row in enumerate(data):ax。bar(4 * t,row,zs=i,zdir=y ,alpha=0.8,color=cmap.to_rgba(i))plt.show()
三维(三维的缩写)柱形图# PLT。show()import numpy as NP from matplotlib import cm import matplotlib。mpl _ toolkits中的颜色列。mplot 3d导入轴3d导入matplotlib。py绘图为PLT #数据生成alpha=NP。Lin space(1,8,5)t=np.linspace(0,5,16)t_grid,a_grid=np.meshgrid(t,alpha)data=np.exp(-t_grid * (1 ./a _ grid))# Plottingfig=PLT。图()ax=图. GCA(投影= 3d )Xi=T _ grid。flatten()yi=a _ grid。flatten()lhzddy=NP。零(数据。大小)dx=。30 * NP。个(数据。size)dy=。30 * NP。个(数据。size)dz=数据。展平()斧头。set _ xlabel( T )ax。set _ y标签( Alpha )轴。条形3d(,yi,lhzd
三维(三维的缩写)柱体以网格布局定位,bar3d()方法接受六个必需参数作为输入。前三个参数是每个柱体下端的x、y和z坐标:
Xi=t _ grid。flatten()yi=a _ grid。flatten()lhzddy=NP。零(数据。尺寸)温馨提示:bar3d()方法将坐标列表作为输入,而不是网格坐标,因此需要对矩阵网格和t形网格调用变平方法。
bar3d()方法的另外三个必需参数是每个柱体在每个维度的值。这里,条形图的高度取自数据矩阵。条形宽度和深度设置为.30:
DX=.30 * NP。个(数据。size) dy=.30 * NP。个(数据。size) DZ=数据。flatten()系列链接Python-Matplotlib可视化(一)3354详细讲解了常用统计图的绘制。
Python-Matplotlib可视化(2)——自定义颜色绘制漂亮的统计图
Python-Matplotlib可视化(3)——自定义风格绘制精美的统计图
Python-Matplotlib可视化(4)——添加注释,使统计图易于理解
Python-Matplotlib可视化(5)——添加自定义形状以绘制复杂图形
Python-Matplotlib可视化(6)——自定义坐标轴使统计图清晰易懂
Python-Matplotlib可视化(7)——多方面自定义统计图的绘制
Python-Matplotlib可视化(8)——图形的输出和保存
Python-Matplotlib可视化(9)——精通绘制更实用的图形