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中open函数的使用
Mar 01 Python
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
Mar 31 Python
Python正则表达式匹配日期与时间的方法
Jul 07 Python
python scrapy爬虫代码及填坑
Aug 12 Python
python hash每次调用结果不同的原因
Nov 21 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
Dec 12 Python
python numpy数组中的复制知识解析
Feb 03 Python
安装多个版本的TensorFlow的方法步骤
Apr 21 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
Jun 18 Python
Python基础之数据结构详解
Apr 28 Python
如何利用pygame实现打飞机小游戏
May 30 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
Home Coffee Roasting
2021/03/03 咖啡文化
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
python连接池实现示例程序
2013/11/26 Python
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
python书籍信息爬虫实例
2018/03/19 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
诚信贷款承诺书
2014/05/30 职场文书
2014年教研员工作总结
2014/12/23 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
React如何创建组件
2021/06/27 Javascript
Python实现归一化算法详情
2022/03/18 Python