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 Web服务器Tornado使用小结
May 06 Python
django初始化数据库的实例
May 27 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
Python Requests库基本用法示例
Aug 20 Python
python地震数据可视化详解
Jun 18 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
python matplotlib包图像配色方案分享
Mar 14 Python
python图片验证码识别最新模块muggle_ocr的示例代码
Jul 03 Python
python time()的实例用法
Nov 03 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 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
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
2018/05/17 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
python读写ini文件示例(python读写文件)
2014/03/25 Python
21行Python代码实现拼写检查器
2016/01/25 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
python3音乐播放器简单实现代码
2020/04/20 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
Python使用pymysql小技巧
2017/06/04 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
python版本单链表实现代码
2018/09/28 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Python3爬虫全国地址信息
2019/01/05 Python
python简单实现AES加密和解密
2019/03/28 Python
美国时尚在线:Showpo
2017/09/08 全球购物
英文简历中的自荐信范文
2013/12/14 职场文书
网络编辑职责
2014/03/01 职场文书
倡议书范文
2014/04/16 职场文书
班委竞选演讲稿
2014/04/28 职场文书
食品安全汇报材料
2014/08/18 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
R9700摩机记
2022/04/05 无线电
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers