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内置函数bin() oct()等实现进制转换
Dec 30 Python
python模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
Apr 26 Python
简介Python中用于处理字符串的center()方法
May 18 Python
python的else子句使用指南
Feb 27 Python
Python中元组,列表,字典的区别
May 21 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
python 标准差计算的实现(std)
Jul 29 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
对python中arange()和linspace()的区别说明
May 03 Python
详解Python为什么不用设计模式
Jun 24 Python
C站最全Python标准库总结,你想要的都在这里
Jul 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
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
PHP 编写大型网站问题集
2010/05/07 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
javascript Array对象基础知识小结
2010/11/16 Javascript
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
JS中的三个循环小结
2017/06/20 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
python获取代码运行时间的实例代码
2018/06/11 Python
python3下载抖音视频的完整代码
2019/06/05 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
Android面试题及答案
2015/09/04 面试题
大学生毕业求职的自我评价
2013/09/29 职场文书
参观监狱心得体会
2014/01/02 职场文书
晨会主持词
2014/03/17 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
经典毕业生求职信
2014/07/12 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript