用Matplotlib画三维图

最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感

三维的线图和散点图

#绘制三角螺旋线

from mpl_toolkits import mplot3d

%matplotlib inline

import matplotlib.pyplot as plt

import numpy as np

ax = plt.axes(projection='3d')

#三维线的数据

zline = np.linspace(0, 15, 1000)

xline = np.sin(zline)

yline = np.cos(zline)

ax.plot3D(xline, yline, zline, 'gray')

# 三维散点的数据

zdata = 15 * np.random.random(100)

xdata = np.sin(zdata) + 0.1 * np.random.randn(100)

ydata = np.cos(zdata) + 0.1 * np.random.randn(100)

ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap='Greens')

三维等高线图

def f(x, y):

return np.sin(np.sqrt(x ** 2 + y ** 2))

x = np.linspace(-6,6,30)

y = np.linspace(-6,6,30)

X, Y = np.meshgrid(x, y)

Z = f(X,Y)

fig = plt.figure()

ax = plt.axes(projection='3d')

ax.contour3D(X, Y, Z, 50, cmap='binary')

ax.set_xlabel('x')

ax.set_ylabel('y')

ax.set_zlabel('z')

#调整观察角度和方位角。这里将俯仰角设为60度,把方位角调整为35度

ax.view_init(60, 35)

线框图和全面图

全面图和线框图相似,只不过线框图的每一个面都是由多边形构成。只要增加唉一个配色方案来填充这些多边形,就可以感受到可视化图形表面的拓扑结构了。

#线框图

fig =plt.figure()

ax = plt.axes(projection='3d')

ax.plot_wireframe(X, Y, Z, color='c')

ax.set_title('wireframe')

#曲面图

ax = plt.axes(projection='3d')

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='viridis', edgecolor='none')

ax.set_title('surface')

#使用极坐标可以获得切片的效果

r = np.linspace(0, 6, 20)

theta = np.linspace(-0.9 * np.pi, 0.8 * np.pi, 40)

r, theta = np.meshgrid(r, theta)

X = r * np.sin(theta)

Y = r * np.cos(theta)

Z = f(X, Y)

ax = plt.axes(projection='3d')

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='viridis', edgecolor='none')

曲面三角剖分

在某些应用场景下,上述这些要求均匀采样的网格数据显得太过严格且不太容易实现。这时就可以使用三角剖分部分图形。

theta = 2 * np.pi * np.random.random(1000)

r = 6 * np.random.random(1000)

x = np.ravel(r * np.sin(theta))

y = np.ravel(r * np.cos(theta))

z = f(x, y)

ax = plt.axes(projection='3d')

ax.scatter(x, y, z, c=z, cmap='viridis', linewidth=0.5)

#上图还有许多地方需要修补,这些工作可以由ax.plot_trisurf函数帮助我们完成。它首先找到一组所有点都连接起来的三角形,然后用这些三角形创建曲面

ax = plt.axes(projection='3d')

ax.plot_trisurf(x, y, z, cmap='viridis', edgecolor='none')

莫比乌斯带(应用曲面三角剖分)

#绘制莫比乌斯带

#由于它是一条二维带,因此需要两个内在维度。theta维度取值范围是0~2pi,宽度维度w取值范围是-1~1

theta = np.linspace(0, 2 * np.pi, 30)

w = np.linspace(-0.25, 0.25, 8)

w, theta = np.meshgrid(w, theta)

phi = 0.5 * theta

#x-y平面内的半径

r = 1 + w * np.cos(phi)

x = np.ravel(r * np.cos(theta))

y = np.ravel(r * np.sin(theta))

z = np.ravel(w * np.sin(phi))

#要画出莫比乌斯带,还必须保证三角部分是正确的。最好的方法是首先用基本参数化方法定义三角部分,然后用Matplotlib将

#这个三角剖分映射到莫比乌斯带的三维空间里

from matplotlib.tri import Triangulation

tri = Triangulation(np.ravel(w), np.ravel(theta))

ax = plt.axes(projection='3d')

ax.plot_trisurf(x, y, z, triangles=tri.triangles, cmap='viridis', linewidth=0.2)

ax.set_xlim(-1, 1);ax.set_ylim(-1,1);ax.set_zlim(-1,1)

到此这篇关于如何用Matplotlib 画三维图的示例代码的文章就介绍到这了,更多相关Matplotlib 三维图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python画三维立体图-如何用Matplotlib 画三维图的示例代码相关推荐

  1. python怎样画立体图-如何用Matplotlib 画三维图的示例代码

    用Matplotlib画三维图 最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平 ...

  2. python用matplotlib画球_python 如何用matplotlib画一个漂亮的圆-百度经验

    import numpy as np import matplotlib.pyplot as plt from matplotlib import colors # 该行用于设置chart 的样式,可 ...

  3. python画三维立体图完整代码_如何用Matplotlib 画三维图的示例代码

    最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散 ...

  4. python 画三维函数图-如何用Matplotlib 画三维图的示例代码

    最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散 ...

  5. python绘制三维曲面图-python中Matplotlib实现绘制3D图的示例代码

    Matplotlib 也可以绘制 3D 图像,与二维图像不同的是,绘制三维图像主要通过 mplot3d 模块实现.但是,使用 Matplotlib 绘制三维图像实际上是在二维画布上展示,所以一般绘制三 ...

  6. python 做界面时如何使图片保持透明背景_Python matplotlib生成图片背景透明的示例代码...

    使用matplotlib生成图片,想要背景透明,而且图例部分也显示透明效果,找到了大概的设置方法,特此记录. # coding=utf-8 # matplotlib背景透明示例图 # python 3 ...

  7. 圆形和多边形雷达图python-Matplotlib绘制雷达图和三维图的示例代码

    1.雷达图 程序示例 '''1.空白极坐标图''' import matplotlib.pyplot as plt plt.polar() plt.show() '''2.绘制一个极坐标点''' im ...

  8. python台风动图绘制_使用Python绘制台风轨迹图的示例代码

    参考: 使用CMA热带气旋最佳路径数据集,对我国周边的台风进行绘制 import re import os import numpy as np import matplotlib.pyplot as ...

  9. python合并音频和视频_ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码

    安装 官网下载 选择需要的版本 将解压后得到的以下几个文件放置在E:\FFmpeg下 环境变量 此电脑--属性--高级系统设置--环境变量 在系统变量(也就是下面那一半)处找到新建,按如下所示的方法填 ...

最新文章

  1. 8、计算机图形学——纹理的相关问题及解决办法
  2. Android 基本 Jackson Marshalling(serialize)/Unmarshalling(deserialize)
  3. QTime使用中遇到的”not enough actual parameters for macro 'min'“问题
  4. mysql dba系统学习(21)mysql存储引擎InnoDB
  5. svn教程----TortoiseSVN常用操作
  6. 【开卷故意】记录一次高并发下的死锁解决思考过程
  7. 使用引用的方式交换数据的数值
  8. Centos6的VSFTP服务器配置使用教程
  9. 基础算法 —— 排序算法
  10. java反向链表列表写法,一个使用链表追加,反向和显示的java程序
  11. C# 封装的功能强大的中国农历日历操作类的代码
  12. 社交产品方法论(八):数据分析的二三事
  13. Python GUI程序整理
  14. 阶段3 2.Spring_07.银行转账案例_1 今日课程内容介绍
  15. 获取CPU序列号的Delphi程序
  16. win操作iOS UI自动化(tidevice+appium)
  17. c语言:输入三角形的三边,判断是否是直角三角形
  18. OPPO Watch 2五大亮点加持 定位旗舰全智能手表
  19. 初级中级高级测试工程师的区别
  20. Linux vim/vi下backspace(退格键)出现^? 或^H

热门文章

  1. ggplot2设置坐标轴范围_R可视化03|ggplot2图层-几何对象图层(geom layer)
  2. 微信小程序-页面跳转传值
  3. Redis: Redis Desk Manager Setup
  4. 程序员 - 爱的表白
  5. 【c++内存分布系列】单独一个类
  6. SQLSERVER2005登录时出错
  7. Java自学笔记(13):【面向对象】方法覆盖,final关键字,对象转型
  8. 介绍importlib
  9. bzoj 5339 [TJOI2018]教科书般的亵渎 拉格朗日插值
  10. Codeforces 336C 0-1背包