100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Matplotlib Python 画图工具包教程学习笔记4 等高线图以及3D图形的画法

Matplotlib Python 画图工具包教程学习笔记4 等高线图以及3D图形的画法

时间:2021-07-19 05:59:02

相关推荐

Matplotlib Python 画图工具包教程学习笔记4 等高线图以及3D图形的画法

文章目录

1.等高线图1.1 meshgrid1.2 plt.contourf1.3 plt.contour1.4 plt.clabe1.5 测试代码1.6 最终效果2. 3D图形的绘制2.1 plot_surface2.2 测试代码2.3 测试结果写在最后

1.等高线图

要想画出一个等高线图,主要分为以下三个步骤

铺盖出平面在平面上赋值在分界处画出等高线为等高线添加标签

1.1 meshgrid

主要用于铺盖出一个二维平面

其参数主要传进去两个linspace函数生成的向量如果传进去的两个向量的维度分别为m维度和n维度,则可以生成一个m*n的一个网格平面在这m*n个网格数据中附上对应的数值,则相当于在三维的的空间中做出了图像,第三个维度在二维平面中表现为颜色的深浅

#定义网格X,Y = np.meshgrid(x,y)


1.2 plt.contourf

f对应的意思是fill,这个函数的功能主要可以将二维的图片依据传进去的参数Z涂上相应的颜色

参数1和2传进去刚才生成的二维网格的平面坐标参数3传进去网格对应生成的Z轴数据参数4输入一个整数,表示图片中将被分成的色块的数量alpha:透明度cmap:图片的整体色系

#把颜色放上去# 数字8 表示将等高线分成多少部分,如果这里填8的话就是10个部分plt.contourf(X, Y, f(X,Y), 8, alpha = 0.75, cmap=plt.cm.hot)


1.3 plt.contour

相比于上面一个函数,少了个f,这个函数主要用于在不同的色块交界的地方绘制等高线

其传进去的前几个参数的含义与上一部分的函数大致相同colors:线的颜色linewidths:线宽

#画等高线的线#注意线的宽度是 linewidths,后面有sC = plt.contour(X,Y,f(X,Y),8,colors = 'black',linewidths=.5)


1.4 plt.clabe

为等高线加上标注

第一个参数传进去刚才等高线绘制函数返回的句柄inline:等高线是否穿过字体fontsize:文字大小

#添加线对应的标签#改为False的话就会使得线穿过数字本身plt.clabel(C,inline=True,fontsize = 10)


1.5 测试代码

# -*- coding:utf-8 -8-"""Author: LeungDate: --08--23"""import matplotlib.pyplot as pltimport numpy as npdef f(x, y):# the height functionreturn (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)n = 256x = np.linspace(-3,3,n)y = np.linspace(-3,3,n)#定义网格X,Y = np.meshgrid(x,y)#把颜色放上去# 数字8 表示将等高线分成多少部分,如果这里填8的话就是10个部分plt.contourf(X, Y, f(X,Y), 8, alpha = 0.75, cmap=plt.cm.hot)#画等高线的线#注意线的宽度是 linewidths,后面有sC = plt.contour(X,Y,f(X,Y),8,colors = 'black',linewidths=.5)#添加线对应的标签#改为False的话就会使得线穿过数字本身plt.clabel(C,inline=True,fontsize = 10)plt.xticks(())plt.yticks(())plt.show()

1.6 最终效果


2. 3D图形的绘制

3D图像与等高线的绘制方法绘制,都是几大步骤

指定网格在网格上写下对应的数值绘制图像 ,主要使用plot_surface函数

不过需要注意的是,我们在绘制3D图像的时候需要在前面加上加粗样式一个3D图像的定义句柄

#加上一个3D的坐标轴ax = Axes3D(fig)

这个功能类似于我们画2D图像时候定义的figure

2.1 plot_surface

与前面等高线的绘制函数类似

前三参数传进去X,Y,Zrstride=1 表示行跨度 与列跨度,跨度越大,其小正方形面积越大cmap=plt.get_cmap(‘rainbow’):设置图形的色系为彩虹色

# rstride=1 表示行跨度 与列跨度ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))

2.2 测试代码

# -*- coding:utf-8 -8-"""Author: LeungDate: --08--23"""import matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()#加上一个3D的坐标轴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)# rstride=1 表示行跨度 与列跨度ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))# 从z轴压下去,投影到xoy平面上ax.contourf(X,Y,Z,zdir='z',offset=-1,cmap='rainbow')ax.set_xlim(-4,4)plt.show()

2.3 测试结果


写在最后

本文章为【莫烦Python】Matplotlib Python 画图教程课程对应的一些课堂笔记,并参考了Matplotlib的开发者文档,仅为各位同志学习参考之用

各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟! <(^-^)>

才疏学浅,若有纰漏,恳请斧正

本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。