利用Axes3D绘制三维性能曲面

举报
tsinghuazhuoqing 发表于 2022/01/03 23:21:15 2022/01/03
【摘要】 简 介: 绘制二维函数的3D曲面图可以帮助我们更好理解函数内所蕴含的规律。Axes3D是matplotlib中的绘制函数。利用surface, countour,countourf等可以很好的显示函...

简 介: 绘制二维函数的3D曲面图可以帮助我们更好理解函数内所蕴含的规律。Axes3D是matplotlib中的绘制函数。利用surface, countour,countourf等可以很好的显示函数3D内容。

关键词 Axes3DsurfacecontourII

绘制曲面
文章目录
绘制举例
测试代码
测试结果
颜色参数
颜色名称
改变颜色
更多举例
电阻组合
搜索代码
搜索结果
切片到一维
二维非线性函数
总 结

 

§01 制曲面


  多时候需要绘制三维曲面,比如绘制二维函数取值,优化问题在二维上的切片投影等。通过 绘制分类界面以及性能曲面中的meshgrid函数 或者二维的格点,经过计算可以通过surface, contour等函数绘制三维曲面和等高线。

一、绘制举例

1、测试代码

from headm import *                 #

from mpl_toolkits.mplot3d import Axes3D

x = 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()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2、测试结果

▲ 图1.1.1 绘制出的z三维函数

▲ 图1.1.1 绘制出的z三维函数

z.shape:(80, 80)

  
 
  • 1

二、颜色参数

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

▲ 图1.2.1  colormap中的颜色

▲ 图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
  • 3
  • 4
  • 5

▲ 图1.2.2 改变颜色后的高度图

▲ 图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)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

2、搜索结果

(1)搜索范围:100:10000:50

▲ 图2.1.1 搜索R1,R2的性能曲线

▲ 图2.1.1 搜索R1,R2的性能曲线

(2)搜索范围:500:3000:10

▲ 图2.1.2 搜索R1,R2性能曲线

▲ 图2.1.2 搜索R1,R2性能曲线

(3)搜索范围:500:4000:10

▲ 图2.1.3 搜索R1,R2性能曲线

▲ 图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()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

▲ 图2.1.4 R2对应的最大电压

▲ 图2.1.4 R2对应的最大电压

二、二维非线性函数

f = 10 4 x 1 2 − 2.1 x 1 4 + 1 3 x 1 6 + x 1 x 2 − 4 x 2 2 + 4 x 2 2 + 2 f = {{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=4x122.1x14+31x16+x1x24x22+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()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

▲ 图2.2.1 绘制的3D图像

▲ 图2.2.1 绘制的3D图像

 

  结 ※


  制二维函数的3D曲面图可以帮助我们更好理解函数内所蕴含的规律。Axes3D是matplotlib中的绘制函数。利用surface, countour,countourf等可以很好的显示函数3D内容。


■ 相关文献链接:

● 相关图表链接:

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/122283172

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。