Python中三维坐标空间绘制的实现


Posted in Python onSeptember 22, 2020

在三维空间绘制点,线,面

1.绘制点

用scatter()散点绘制三维坐标点

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
dot1 = [[0, 0, 0], [1, 1, 1], [
  2, 2, 2], [2, 2, 3], [2, 2, 4]] # 得到五个点
plt.figure() # 得到画面
ax1 = plt.axes(projection='3d')
ax1.set_xlim(0, 5) # X轴,横向向右方向
ax1.set_ylim(5, 0) # Y轴,左向与X,Z轴互为垂直
ax1.set_zlim(0, 5) # 竖向为Z轴
color1 = ['r', 'g', 'b', 'k', 'm']
marker1 = ['o', 'v', '1', 's', 'H']
i = 0
for x in dot1:
  ax1.scatter(x[0], x[1], x[2], c=color1[i],
        marker=marker1[i], linewidths=4) # 用散点函数画点
  i += 1
plt.show()

Python中三维坐标空间绘制的实现

2.绘制线

函数plot3D(xs, ys, *args, zdir=‘z', **kwargs),用于绘制三维坐标的线,其参数使用说明如下.
(1)xs,ys,zdir=‘z': 设置(x,y,z)坐标值,为集合对象,是该函数与plot()的唯一区别.
(2) kwargs:接受键值对参数,使用方法同plot()

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
plt.figure()
ax = plt.subplot(111, projection='3d')
ax.set_xlim(0, 20) # X轴,横向向右方向
ax.set_ylim(20, 0) # Y轴,左向与X,Z轴互为垂直
ax.set_zlim(0, 20) # 竖向为Z轴
z = np.linspace(0, 4*np.pi, 500)
x = 10*np.sin(z)
y = 10*np.cos(z)
ax.plot3D(x, y, z, 'black') # 绘制黑色空间曲线
# ----------------------------------------------------------
z1 = np.linspace(0, 4*np.pi, 500)
x1 = 5*np.sin(z1)
y1 = 5*np.cos(z1)
ax.plot3D(x1,y1,z1,'g--')   #绘制绿色空间虚曲线
#------------------------------------------------------------
ax.plot3D([0,18,0],[5,18,10],[0,5,0],'om-')  #绘制带o折线
plt.show()

Python中三维坐标空间绘制的实现

3.绘制面

3D 图形需要的数据与等高线图基本相同:X、Y 数据决定坐标点,Z 轴数据决定 X、Y 坐标点对应的高度。与等高线图使用等高线来代表高度不同,3D 图形将会以更直观的形式来表示高度。
为了绘制 3D 图形,需要调用 Axes3D 对象的 plot_surface()方法来完成。

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import numpy as np
fig = plt.figure(figsize=(15, 5))
ax = fig.add_subplot(131, projection='3d') # 第一个绘图区
x = np.arange(1, 50, 1)
y = np.arange(1, 50, 1)
X, Y = np.meshgrid(x, y) # 将坐标向量(x,y)变为坐标矩阵(X,Y)


def Z(X, Y): # 自定义求Z向量的函数
  return X*0.2+Y*0.3+20


s1 = ax.plot_surface(X, Y, Z(X, Y), rstride=10,
           cstride=10, cmap=cm.jet, linewidth=1,
          antialiased=True)  #绘制面
ax.set_xlim3d(0,50)  #指定x轴坐标值范围
ax.set_ylim3d(0,50)  #指定y轴坐标值范围
ax.set_zlim3d(0,50)  #指定z轴坐标值范围 
fig.colorbar(s1,shrink=1,aspect=5)  
#------------------------------------------
ax1 = fig.add_subplot(132,projection='3d')  #第二个绘图区
s2 = ax1.plot_surface(X,Y,Z(X,Y),rstride=1,
           cstride=1, cmap=cm.jet, linewidth=1,
          antialiased=False)  #绘制面
fig.colorbar(s2,shrink=0.5,aspect=5)
#--------------------------------------------
d = 0.05
x1 = np.arange(-4,4,d)
y1 = np.arange(-3,3,d)
X1,Y1 = np.meshgrid(x1,y1)
def Z1(X,Y):         #自定义求z向量的函数
  z1 = np.exp(-X**2-Y**2)
  z2 = np.exp(-(X-1)**2-(Y-1)**2)
  return (z2-z1)*2       #返回Z坐标值
ax2 = fig.add_subplot(133,projection='3d')
s3 = ax2.plot_surface(X,Y,Z(X,Y),rstride=1,
           cstride=1, cmap=cm.jet, linewidth=1,
          antialiased=False)
fig.colorbar(s3,shrink=0.5,aspect=5)
plt.show()

Python中三维坐标空间绘制的实现

到此这篇关于Python中三维坐标空间绘制的实现的文章就介绍到这了,更多相关Python 三维坐标空间内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现删除Android工程中的冗余字符串
Jan 19 Python
python发送邮件功能实现代码
Jul 15 Python
Python 内置函数complex详解
Oct 23 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
Dec 12 Python
Python2与Python3的区别实例总结
Apr 17 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
Python netmiko模块的使用
Feb 14 Python
K最近邻算法(KNN)---sklearn+python实现方式
Feb 24 Python
Python 基于jwt实现认证机制流程解析
Jun 22 Python
python文件及目录操作代码汇总
Jul 08 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
分享7个 Python 实战项目练习
Mar 03 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 #Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 #Python
Python如何获取文件路径/目录
Sep 22 #Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 #Python
python 实现压缩和解压缩的示例
Sep 22 #Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 #Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 #Python
You might like
PHP读取目录下所有文件的代码
2008/01/07 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
php中stream(流)的用法
2014/03/25 PHP
Jquery常用技巧收集整理篇
2010/11/14 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
Python 12306抢火车票脚本
2018/02/07 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
西班牙Polo衫品牌:Polo Club
2020/08/09 全球购物
有针对性的求职自荐信
2013/11/14 职场文书
求职简历中个人的自我评价
2013/12/01 职场文书
大学生如何写自荐信
2014/01/08 职场文书
处级干部考察材料
2014/12/24 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
python实现会员管理系统
2022/03/18 Python