matplotlib est la bibliothèque de dessins la plus célèbre de Python. Cet article partage avec vous des exemples d'utilisation de matplotlib+numpy pour dessiner une variété de dessins, notamment des tracés remplis, des nuages de points et des diagrammes à barres, des tracés de contour, des bitmaps et des diagrammes 3D. , les amis dans le besoin peuvent s'y référer. Jetons un coup d'œil ensemble.
Préface
matplotlib est la bibliothèque de dessins la plus célèbre de Python. Elle fournit un ensemble de commandes similaires à matlabAPI, idéal pour la cartographie interactive. Cet article analysera plusieurs graphiques pris en charge dans matplot et couramment utilisés en analyse sous forme d'exemples. Ceux-ci incluent des tracés remplis, des nuages de points, des tracés à barres, des tracés de contours, des tracés de points et des tracés 3D. Jetons un coup d'œil à l'introduction détaillée :
1. >
Code de référence
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,y1,y2,where=(y<>y2),color='green',alpha=0.25) plot(x,y1) plot(x,y2) show()
La
fonction est principalement utilisée ici. Cette fonction est facile à comprendre. Il s'agit de passer le tableau fill_between
de l'axe des x et les deux tableaux de l'axe des y qui doivent être remplis, puis de passer la plage de remplissage et d'utiliser pour déterminer le zone de remplissage ; enfin, vous pouvez ajouter la couleur de remplissage, la transparence et d'autres paramètres modifiés. Bien sûr, la fonction where=
a également une utilisation plus avancée, veuillez consulter l'utilisation de fill_between ou le document d'aide pour plus de détails.
fill_between
Rendu
2.
Code de référence
Brève analyse
Présentons d'abord le
from matplotlib.pyplot import * n = 1024 X = np.random.normal(0,1,n) Y = np.random.normal(0,1,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()
Ensuite, il y a la fonction . Cette fonction accepte deux paramètres, représentant respectivement le tableau y et le tableau x, puis renvoie la valeur correspondante, et le résultat est en radians.
Ensuite, la méthode normal
de dessin d'un nuage de points est utilisée. Tout d'abord, bien sûr, les tableaux x et y sont transmis, puis le paramètre s représente l'échelle, qui est la taille du nuage de points. points ; le paramètre c représente la couleur, je lui donnerai. Ce qui est passé est un tableau divisé selon l'angle, qui correspond à la couleur de chaque point (même si je ne sais pas comment cela correspond, mais cela semble être le cas) une conversion relative basée sur les autres éléments du tableau. Ce n'est pas important ici, c'est pareil de toute façon. Il suffit d'attribuer la même valeur à la couleur) ; le dernier est le paramètre
arctan2
En ce qui concerne l'utilisation avancée de la fonction arctan(y/x)
, veuillez vous référer à la fonction scatter du document officiel ou au document d'aide.
Enfin, définissez simplement la plage de coordonnées. scatter
alpha
scatter
3.
Code de référence
Brève analyse
Remarque Vous devez importer le pylab emballer manuellement, sinon la barre ne sera pas trouvée. . .
Utilisez d'abord la fonction de numpy pour générer un tableau de [0,1,2,…,n]. (Vous pouvez également utiliser linspace)
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,1.0,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,y in zip(X,Y2): text(x+0.4, -y-0.05, '%.2f' % y, ha='center', va= 'top') xlim(-.5,n) xticks([]) ylim(-1.25,+1.25) yticks([]) show()
Vient ensuite l'utilisation de la fonction bar. L'utilisation de base est similaire au tracé et au scatter précédent, en passant les coordonnées horizontales et verticales et certains paramètres décoratifs.
Ensuite, nous devons utiliser la boucle pour afficher les nombres pour l'histogramme : utilisez la fonction arange
de python pour associer X et Y1 par paires et faites une boucle pour obtenir la valeur de chacun position des données, puis utilisez la fonction
chaîne uniform
à cette position (faites attention à l'ajustement détaillé de la position). le texte passe les coordonnées horizontales et verticales, la chaîne à afficher, le paramètre
for
Quant à l'utilisation spécifique de la fonction , veuillez vous référer à l'utilisation de la fonction barre ou au document d'aide. zip
text
Renduha
bar
4.
Code de référence
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,3,n) y = np.linspace(-3,3,n) X,Y = np.meshgrid(x,y) contourf(X, Y, f(X,Y), 8, alpha=.75, cmap=cm.hot) C = contour(X, Y, f(X,Y), 8, colors='black', linewidth=.5) clabel(C, inline=1, fontsize=10) show()
简要分析
首先要明确等高线图是一个三维立体图,所以我们要建立一个二元函数f,值由两个参数控制,(注意,这两个参数都应该是矩阵)。
然后我们需要用numpy的meshgrid
函数生成一个三维网格,即,x轴由第一个参数指定,y轴由第二个参数指定。并返回两个增维后的矩阵,今后就用这两个矩阵来生成图像。
接着就用到coutourf
函数了,所谓contourf,大概就是contour fill的意思吧,只填充,不描边;这个函数主要是接受三个参数,分别是之前生成的x、y矩阵和函数值;接着是一个整数,大概就是表示等高线的密度了,有默认值;然后就是透明度和配色问题了,cmap的配色方案这里不多研究。
随后就是contour
函数了,很明显,这个函数是用来描线的。用法可以类似的推出来,不解释了,需要注意的是他返回一个对象,这个对象一般要保留下来个供后续的加工细化。
最后就是用clabel函数来在等高线图上表示高度了,传入之前的那个contour
对象;然后是inline
属性,这个表示是否清除数字下面的那条线,为了美观当然是清除了,而且默认的也是1;再就是指定线的宽度了,不解释,。
效果图
五、点阵图
参考代码
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,3.5*n) y = np.linspace(-3,3,3.0*n) X,Y = np.meshgrid(x,y) Z = f(X,Y) imshow(Z,interpolation='nearest', cmap='bone', origin='lower') colorbar(shrink=.92) show()
简要分析
这段代码的目的就是将一个矩阵直接转换为一张像照片一样的图,完整的进行显示。
前面的代码就是生成一个矩阵Z,不作解释。
接着用到了imshow
函数,传人Z就可以显示出一个二维的图像了,图像的颜色是根据元素的值进行的自适应调整,后面接了一些修饰性的参数,比如配色方案(cmap),零点位置(origin)。
最后用colorbar
显示一个色条,可以不传参数,这里传进去shrink
参数用来调节他的长度。
效果图
六、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, 4, 0.25) X, Y = np.meshgrid(X, Y) R = np.sqrt(X**2 + Y**2) Z = np.sin(R) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot) ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.cm.hot) ax.set_zlim(-2,2) show()
简要分析
有点麻烦,需要用到的时候再说吧,不过原理也很简单,跟等高线图类似,先画图再描线,最后设置高度,都是一回事。
效果图
总结
【相关推荐】
1. Python免费视频教程
2. Python基础入门教程
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!