在数据可视化实践过程中经常需要对三维甚至更高纬度数据进行可视化。由于视线阻挡,人们在看三维物体时并不能观测清楚完全。有时候需要获取三维图形的某个截面来单独分析数据。

# -*- coding: utf-8 -*-
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib as mpl
from scipy import interpolate
import matplotlib.cm as cm
import matplotlib.pyplot as pltxmin=-10
ymin=-10
xmax=10
ymax=10
rawStrideNum=50#原始数据x,y的分段数
InterpolationNum=100#使用插值方法获取某个截面数据  获取数据时将数据分割的分段数
#生成原始数据的f value
def fm((x, y)):return (np.sin(x) + 0.05 * x ** 2+ np.sin(y) + 0.05 * y ** 2)
#原始数据获取
x = np.linspace(xmin, xmax, rawStrideNum)
y = np.linspace(ymin,ymax,rawStrideNum)
X, Y = np.meshgrid(x, y)#50*50的网格数据
Z = fm((X, Y))#开始作图
fig = plt.figure(figsize=(9, 6))
#Draw sub-graph1
ax=plt.subplot(1, 2, 1,projection = '3d')
surf = ax.plot_surface(X, Y, Z, rstride=2, cstride=2, cmap=cm.coolwarm,linewidth=0.5, antialiased=True)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('f(x, y)')
plt.colorbar(surf, shrink=0.5, aspect=5)#标注#subplot2data preparation
#(1)用插值函数拟合数据
newfun=interpolate.interp2d(X, Y, Z,kind="cubic")#返回的是一个函数  newfun为一个函数
xnew = np.linspace(xmin, xmax, InterpolationNum)#重新划分x,y间隔数为InterpolationNum个
ynew = np.linspace(ymin, ymax, InterpolationNum)
fnew=newfun(xnew,ynew)#得到重新划分x,y间隔后fnew值  fnew为InterpolationNum*InterpolationNum的二维数组def getXCrossSectionData(f,xval):index=(xval-xmin)*1.0/(xmax-xmin)*InterpolationNumprint " x index  ",int(index)FixedX=np.empty(InterpolationNum)FixedX.fill(xval)return  FixedX,f[int(index)]
def getYCrossSectionData(f,yval):index2=(yval-ymin)*1.0/(ymax-ymin)*InterpolationNumprint "y index",int(index2)FixedY=np.empty(InterpolationNum)FixedY.fill(yval)return FixedY,f[:,int(index2)]FixedX,Z_FixedX=getXCrossSectionData(fnew,-9)#设置想要获取的x截面
FixedY,Z_FixedY=getYCrossSectionData(fnew,5)
#在原图上添加直线,从吻合性判断数据的准确性
ax.plot(FixedX, ynew, Z_FixedX)
ax.plot(xnew, FixedY, Z_FixedY)#Draw sub-graph2单独抽取某个截面
ax2=plt.subplot(122, projection = '3d')
ax2.plot(FixedX, ynew, Z_FixedX)
ax2.plot(xnew, FixedY, Z_FixedY)plt.show()


    由上图可知,左图在描绘三维物品时,因为视觉阻挡,并不能很好观察底部数据。通过抽取数据的某些截面,可以单独分析数据。

【python】获取三维图形的某个截面相关推荐

  1. python画三维温度散点图-python 绘制三维图形、三维数据散点图

    1. 绘制3D曲面图 from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import ...

  2. python绘制3d图-Python matplotlib绘图示例 - 绘制三维图形

    Python matplotlib模块是扩展的MATLAB的一个绘图工具库.它可以绘制各种图形,下面就学习了下Python中的matplotlib模块,如何绘制三维图形. 示例代码一: # codin ...

  3. python画图三维-Python使用matplotlib绘制三维图形示例

    本文实例讲述了Python使用matplotlib绘制三维图形.分享给大家供大家参考,具体如下: 用二维泡泡图表示三维数据 泡泡的坐标2维,泡泡的大小三维,使用到的函数 plt.scatter(P[: ...

  4. python绘制3d图形-Python基于matplotlib实现绘制三维图形功能示例

    本文实例讲述了Python基于matplotlib实现绘制三维图形功能.分享给大家供大家参考,具体如下: 代码一: # coding=utf-8 import numpy as np import m ...

  5. python代码示例图形-Python使用matplotlib绘制三维图形示例

    本文实例讲述了Python使用matplotlib绘制三维图形.分享给大家供大家参考,具体如下: 用二维泡泡图表示三维数据 泡泡的坐标2维,泡泡的大小三维,使用到的函数 plt.scatter(P[: ...

  6. python画三维立体图-Python+matplotlib绘制三维图形5个精选案例

    如果要绘制三维图形,首先需要使用下面的语句导入相应的对象: from mpl_toolkits.mplot3d import Axes3D 然后使用下面的两种方式之一声明要创建三维子图: ax = f ...

  7. python matplotlib模块——绘制三维图形、三维数据散点图

    2019独角兽企业重金招聘Python工程师标准>>> 分类: 计算机视觉 python matplotlib模块,是扩展的MATLAB的一个绘图工具库.他可以绘制各种图形,可是最近 ...

  8. python绘制三维曲线图_Python基于matplotlib实现绘制三维图形功能示例

    本文实例讲述了Python基于matplotlib实现绘制三维图形功能.分享给大家供大家参考,具体如下: 代码一: # coding=utf-8 import numpy as np import m ...

  9. python绘制三维图散点图_python matplotlib模块——绘制三维图形、三维数据散点图...

    分类: 计算机视觉 python matplotlib模块,是扩展的MATLAB的一个绘图工具库.他可以绘制各种图形,可是最近最的一个小程序,得到一些三维的数据点图,就学习了下python中的matp ...

最新文章

  1. 分布式框架-日志系统思路及实现
  2. less14 颜色函数2
  3. 【随笔】express中间件系统的基本实现
  4. vc:如何从Internet上有效而稳定地下载文件
  5. IntelliJ IDEA不好用?那是因为没掌握这些技巧
  6. 取木棒21根c语言,关于m根火柴 ,人机最多取n根火柴(21根火柴进阶)
  7. nodejs入门_如何在NodeJS中使用套接字创建专业的Chat API解决方案[入门级]
  8. 人脸扫描建模_iPhone12Pro可以3D建模,逼真还原度达95%以上
  9. RAID阵列及常用RAID
  10. 数据结构/图论:最小生成树问题
  11. 阶段3 2.Spring_04.Spring的常用注解_3 用于创建的Component注解
  12. kafka集群搭建(三台服务器)
  13. 互联网金融反欺诈体系
  14. Invalid or unexpected token 报错
  15. 【PPT】连续使用箭头等工具,避免多次重复选择,提升效率
  16. 【板栗糖GIS】wps——如何解决WPS 任务栏图片白块
  17. 使用debussy出现的问题
  18. 文本框直接粘贴添加图片构想
  19. 【虚幻引擎】UE4/UE5 材质
  20. 计算机中职专业课考试科目,中职教师资格证专业课包括哪些

热门文章

  1. Java之强制类型转换
  2. 将系统ISO文件上传至linux 系统内 方式二
  3. Mysql查询(以xx字符开头,以xx字符结尾,第几个字符是xxx)
  4. batch_mini-batch_SGD
  5. 计算机在英语口语教学中的应用,英语口语论文,关于小组合作学习在中职英语口语教学中的实践运用相关参考文献资料-免费论文范文...
  6. 2020年电工(高级)考试资料及电工(高级)找答案
  7. 创造虚拟环境报错An unexpected error has occurred. Conda has prepared the above report.解决方案
  8. DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警
  9. 故障:启动修复无法修复你的电脑
  10. BUUCTF pwn——picoctf_2018_rop chain