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的Django框架中生成CSV文件的方法
Jul 22 Python
教大家使用Python SqlAlchemy
Feb 12 Python
Python中的多行注释文档编写风格汇总
Jun 16 Python
Python 迭代器与生成器实例详解
May 18 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
python reverse反转部分数组的实例
Dec 13 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
python 获取毫秒数,计算调用时长的方法
Feb 20 Python
Python实现蒙特卡洛算法小实验过程详解
Jul 12 Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 Python
pytorch1.0中torch.nn.Conv2d用法详解
Jan 10 Python
为什么称python为胶水语言
Jun 16 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性能测试工具xhprof的详解
2013/06/03 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
解析Python编程中的包结构
2015/10/25 Python
Python实现基本线性数据结构
2016/08/22 Python
python之PyMongo使用总结
2017/05/26 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
天猫超市:阿里巴巴打造的网上超市
2016/11/02 全球购物
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
怎样写留学自荐信
2013/11/11 职场文书
淘宝活动策划方案
2014/02/06 职场文书
单位在职证明书
2014/09/11 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis