利用Axes3D绘制三维性能曲面
简 介: 绘制二维函数的3D曲面图可以帮助我们更好理解函数内所蕴含的规律。Axes3D是matplotlib中的绘制函数。利用surface, countour,countourf等可以很好的显示函数3D内容。
关键词
: Axes3D,surface,contour,II
Contents
§01 绘制曲面
很多时候需要绘制三维曲面,比如绘制二维函数取值,优化问题在二维上的切片投影等。通过 绘制分类界面以及性能曲面中的meshgrid函数 或者二维的格点,经过计算可以通过surface, contour等函数绘制三维曲面和等高线。
一、绘制举例
1、测试代码
from headm import * #from mpl_toolkits.mplot3d import Axes3Dx = arange(-4, 4, 0.1)
y = arange(-4, 4, 0.1)
x,y = meshgrid(x, y)
r = sqrt(x**2+y**2)
z = sin(r)printt(z.shape\)ax = Axes3D(plt.figure(figsize=(12,8)))
ax.plot_surface(x,y,z,rstride=1, cstride=2, cmap=plt.cm.hot)
ax.contour(x,y,z,zdir='z',offset=-2,cmap=plt.cm.hot)ax.set_zlim(-2,2)
plt.show()
2、测试结果
▲ 图1.1.1 绘制出的z三维函数
z.shape:(80, 80)
二、颜色参数
在 Python可视化|matplotlib07-自带颜色条Colormap(三) 给出了 cmap的各种组合。
1、颜色名称
['Accent', 'Blues', 'BrBG', 'BuGn', 'BuPu', 'CMRmap', 'Dark2', 'GnBu', 'Greens', 'Greys', 'OrRd', 'Oranges', 'PRGn', 'Paired', 'Pastel1', 'Pastel2', 'PiYG', 'PuBu', 'PuBuGn', 'PuOr', 'PuRd', 'Purples', 'RdBu', 'RdGy', 'RdPu', 'RdYlBu', 'RdYlGn', 'Reds', 'Set1', 'Set2', 'Set3', 'Spectral', 'Wistia', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd', 'afmhot', 'autumn', 'binary', 'bone', 'brg', 'bwr', 'cividis', 'cool', 'coolwarm', 'copper', 'cubehelix', 'flag', 'gist_earth', 'gist_gray', 'gist_heat', 'gist_ncar', 'gist_stern', 'gist_yarg', 'gnuplot', 'gnuplot2', 'gray', 'hot', 'hsv', 'inferno', 'jet', 'magma', 'nipy_spectral', 'ocean', 'pink', 'plasma', 'prism', 'rainbow', 'seismic', 'spring', 'summer', 'tab10', 'tab20', 'tab20b', 'tab20c', 'terrain', 'twilight', 'twilight_shifted', 'viridis', 'winter']
▲ 图1.2.1 colormap中的颜色
2、改变颜色
ax.plot_surface(x,y,z,rstride=1, cstride=2, cmap=plt.cm.Blues)
ax.contourf(x,y,z,zdir='z',offset=-2,cmap=plt.cm.BuGn)
▲ 图1.2.2 改变颜色后的高度图
§02 更多举例
一、电阻组合
在 通过一个端口读取多个按钮 搜索了多个电阻并联开关的时候,对应的最大电压间隔。可以看到其中峰值非常复杂。下面对于两个电阻组合进行搜索,绘制性能曲面。
1、搜索代码
R0 = 1e3
U0 = 3.3
def minVoltage(r1,r2):rdim = [10e10, r1, r2,1/(1/r1 + 1/r2)]vdim = sorted([r/(r+R0)*U0 for r in rdim])vdiff = [b-a for a,b in zip(vdim[:-1], vdim[1:])]vdiff.append(vdim[0])return min(vdiff)STEP_NUM = 50
x = arange(100, 10000, STEP_NUM)
y = arange(100, 10000, STEP_NUM)
x,y = meshgrid(x, y)z = array([minVoltage(x,y) for x,y in zip(x.flatten(), y.flatten())]).reshape(x.shape)
2、搜索结果
(1)搜索范围:100:10000:50
▲ 图2.1.1 搜索R1,R2的性能曲线
(2)搜索范围:500:3000:10
▲ 图2.1.2 搜索R1,R2性能曲线
(3)搜索范围:500:4000:10
▲ 图2.1.3 搜索R1,R2性能曲线
3、切片到一维
R1 = 4e3
R2 = linspace(0, 10000, 10000)
z = [minVoltage(R1, r2) for r2 in R2]
plt.clf()
plt.figure(figsize=(12,8))
plt.plot(R2, z)
plt.xlabel("R2")
plt.ylabel("Z")
plt.grid(True)
plt.tight_layout()
▲ 图2.1.4 R2对应的最大电压
二、二维非线性函数
f=104x12−2.1x14+13x16+x1x2−4x22+4x22+2f = {{10} \over {4x_1^2 - 2.1x_1^4 + {1 \over 3}x_1^6 + x_1 x_2 - 4x_2^2 + 4x_2^2 + 2}}f=4x12−2.1x14+31x16+x1x2−4x22+4x22+210
x = arange(-4, 4, 0.1)
y = arange(-2, 2, 0.1)
x,y = meshgrid(x,y)
z = 10/(4*x**2 - 2.1*x**4 + x**6/3 + x*y - 4*y**2+4*y**4 + 2)print(z.shape)ax = Axes3D(plt.figure(figsize=(12,8)))
ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap=plt.cm.Blues)plt.show()
▲ 图2.2.1 绘制的3D图像
※ 总 结 ※
绘制二维函数的3D曲面图可以帮助我们更好理解函数内所蕴含的规律。Axes3D是matplotlib中的绘制函数。利用surface, countour,countourf等可以很好的显示函数3D内容。
■ 相关文献链接:
- 绘制分类界面以及性能曲面中的meshgrid函数
- Python可视化|matplotlib07-自带颜色条Colormap(三)
- 通过一个端口读取多个按钮
● 相关图表链接:
- 图1.1.1 绘制出的z三维函数
- 图1.2.1 colormap中的颜色
- 图1.2.2 改变颜色后的高度图
- 图2.1.1 搜索R1,R2的性能曲线
- 图2.1.2 搜索R1,R2性能曲线
- 图2.1.3 搜索R1,R2性能曲线
- 图2.1.4 R2对应的最大电压
- 图2.2.1 绘制的3D图像
利用Axes3D绘制三维性能曲面相关推荐
- matlab rgb三维直方图,MATLAB小技巧之十:利用MATLAB绘制三维彩色柱状图[转载]
MATLAB自带有绘制三维柱状图的函数bar3,有版友反映不好控制柱子的颜色,特别是bar3不能绘制渐变色的柱子,并且bar3不能根据用户指定的散点数据绘制柱状图.为此,我编写了一个函数(scatte ...
- matlab矩阵画柱状三维,[原创]利用MATLAB绘制三维彩色柱状图
function scatterbar(x,y,z,scale) % 根据散点数据绘制3维彩色柱状图 % scatterbar(x,y,z,scale) x,y,z是实值数组,用来指定柱子顶 ...
- Python绘制三维立体图详解与绘图填充
1.利用Python绘制三维图 目标: 绘制图像 z^2 = x^2 + y^2 + x/3 + y/3 1.第一步我们先导入画图所需要的包: import matplotlib.pyplot as ...
- Python绘制三维图详解
利用Python绘制三维图 目标: 绘制图像z2=x2+y2z^2 = x^2 + y^2z2=x2+y2 import matplotlib.pyplot as plt import numpy a ...
- 如何利用MATLAB函数绘制三维曲面?系统学习MATLAB三维曲面的绘制
文章目录 0 前言 1 平面网格数据的生成 2 绘制三维曲面的函数 2.1 mesh函数和surf函数的一般召唤方式 2.2 其他召唤方式 2.3 mesh.surf函数的亲戚朋友 3.标准三维曲面 ...
- Python——根据散点数据绘制三维曲面图( meshgrid函数以及Axes3D [plot_surface] )
1.初始散点数据处理成xy网格数据 import numpy as np x = np.arange(-2, 2, 0.025) y = np.arange(-2, 2, 0.025) x, y = ...
- python绘制三维散点图-python 画三维图像 曲面图和散点图的示例
用python画图很多是根据z=f(x,y)来画图的,本博文将三个对应的坐标点输入画图: 散点图: import matplotlib.pyplot as plt from mpl_toolkits. ...
- python绘制三维曲面图-python中Matplotlib实现绘制3D图的示例代码
Matplotlib 也可以绘制 3D 图像,与二维图像不同的是,绘制三维图像主要通过 mplot3d 模块实现.但是,使用 Matplotlib 绘制三维图像实际上是在二维画布上展示,所以一般绘制三 ...
- MATLAB绘制三维曲面图和等高线 绘图(2)
绘制三维曲面图步骤: 1): 对数据进行处理,得到三维曲面上的点坐标组 方法有: 1.将自变量离散, x=xmin:dx:xmax y=ymin:dy:ymax 2.利用meshgrid 指令 生成 ...
最新文章
- 3.5.1 信道划分介质访问控制
- ORA-600(qerltcInsertSelectRop_bad_state)错误
- 树莓派+百度api实现人脸识别
- Visual Studio 的键盘快捷方式
- Spring@Cacheable注解在类内部调用失效的问题
- 电脑无法连接到系统服务器,请问怎么客户端的电脑连接不到服务器?这是什么原因?...
- android gpio驱动实例,安卓gpio操作示例
- python3 TypeError: 'str' does not support the buffer interface in python
- mysql 短信发送情况检查
- 大神总结的机器学习的数学基础,掌握这些足够
- EXCEL同一个界面下打开两个表格比较
- Java 常见的面试题(反射)
- leetcode第12题Python版整数转罗马字符串
- 制作网页中弹出对话框的制作
- 浙大玉泉校区路由器L2TP设置(极路由1s)
- 声音莫名从扬声器切换到听筒_扬声器听筒的切换
- 什么是Automata(I): Web 3.0的最后一块拼图
- 【CVE-2021-1675】Windows Print Spooler RCE
- 如何将.keystore 文件转成.key文件
- 英文名称来源 男英文名 女英文名