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中用于转换字母为小写的lower()方法使用简介
May 19 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python 操作文件的基本方法总结
Aug 10 Python
python并发编程之线程实例解析
Dec 27 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
Python多继承顺序实例分析
May 26 Python
python制作抖音代码舞
Apr 07 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
Apr 19 Python
django 解决扩展自带User表遇到的问题
May 14 Python
python的launcher用法知识点总结
Aug 07 Python
详解Python高阶函数
Aug 15 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 20 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
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
uni-app如何页面传参数的几种方法总结
2020/04/28 Javascript
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
Python中类的继承代码实例
2014/10/28 Python
Python编程求质数实例代码
2018/01/31 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
python远程邮件控制电脑升级版
2019/05/23 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
信息总监管理职责范本
2014/03/08 职场文书
重阳节活动总结
2014/08/27 职场文书
负责培养人意见
2015/06/05 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
oracle数据库去除重复数据
2022/05/20 Oracle