返回顶部
首页 > 资讯 > 精选 >如何深入理解Matplotlib3D 绘图函数plot_surface
  • 333
分享到

如何深入理解Matplotlib3D 绘图函数plot_surface

2023-06-20 12:06:07 333人浏览 薄情痞子
摘要

这篇文章给大家介绍如何深入理解Matplotlib3D 绘图函数plot_surface,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。今晚开始接触 Matplotlib 的 3D 绘图函数 plot_surface,真

这篇文章给大家介绍如何深入理解Matplotlib3D 绘图函数plot_surface,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

今晚开始接触 Matplotlib 的 3D 绘图函数 plot_surface,真的非常强大,图片质量可以达到出版级别,而且 3D 图像可以旋转 ,可以从不同角度来看某个 3D 立体图,但是我发现各大中文开源社区有关 3D 绘图的代码都是千篇一律的,现除了看源码说明,我几乎得不到半点有关 plot_surface 的重要参数说明,而且我感觉纯英文的源码说明晦涩难懂,而且没有任何配图,初学者看得是云里雾里,经过一晚上的调试,我才完全弄明白所有参数的含义,以及如何改变这些参数控制图形的显示,现将一点心得分享出来

Talk is cheap, show the code

# -*- coding: utf-8 -*-
# author:           inspurer(月小水长)
# pc_type           lenovo
# create_date:      2019/5/25
# file_name:        3DTest
GitHub            https://github.com/inspurer
微信公众号         月小水长(ID: inspurer)

"""
绘制3d图形
"""

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
# 定义figure
fig = plt.figure()
# 创建3d图形的两种方式
# 将figure变为3d
ax = Axes3D(fig)

#ax = fig.add_subplot(111, projection='3d')

# 定义x, y
x = np.arange(-4, 4, 0.25)
y = np.arange(-4, 4, 0.25)

# 生成网格数据
X, Y = np.meshgrid(x, y)

# 计算每个点对的长度
R = np.sqrt(X ** 2 + Y ** 2)
# 计算Z轴的高度
Z = np.sin(R)

# 绘制3D曲面


# rstride:行之间的跨度  cstride:列之间的跨度
# rcount:设置间隔个数,默认50个,ccount:列的间隔个数  不能与上面两个参数同时出现


# cmap是颜色映射表
# from matplotlib import cm
# ax.plot_surface(X, Y, Z, rstride = 1, cstride = 1, cmap = cm.coolwarm)
# cmap = "rainbow" 亦可
# 我的理解的 改变cmap参数可以控制三维曲面的颜色组合, 一般我们见到的三维曲面就是 rainbow 的
# 你也可以修改 rainbow 为 coolwarm, 验证我的结论
ax.plot_surface(X, Y, Z, rstride = 1, cstride = 1, cmap = plt.get_cmap('rainbow'))

# 绘制从3D曲面到底部的投影,zdir 可选 'z'|'x'|'y'| 分别表示投影到z,x,y平面
# zdir = 'z', offset = -2 表示投影到z = -2上
ax.contour(X, Y, Z, zdir = 'z', offset = -2, cmap = plt.get_cmap('rainbow'))

# 设置z轴的维度,x,y类似
ax.set_zlim(-2, 2)

plt.show()
 

运行结果如下:

如何深入理解Matplotlib3D 绘图函数plot_surface

1

其中大部分的参数说明我已经在注释了,应该很容易理解,其中的 rstride (row stride)和 cstride (column stride) (stride是步长的意思,row : 行,column : 列)参数也有了初步的介绍,下面重点讨论如何理解他们。

初探

旋转 3D 图形


 

如何深入理解Matplotlib3D 绘图函数plot_surface


 
2

我发现无论是 x 向,还是 y 向,条纹数都是 32
而这刚好是我们 x = np.arange(-4, 4, 0.25)中[4-(-4)]/0.25 = 32
ax.plot_surface(X, Y, Z, rstride = 1, cstride = 1, cmap = plt.get_cmap('rainbow'))中 rstride = 1, cstride = 1,r(row)对应 x向,c(column)对应 y 向,rstride = 1 说明在 x 向的条纹间隔为 1 个 x 向单位长度(也就是 0.25),cstride = 1 说明在y向的条纹间隔为 1 个 x 向单位长度(也是 0.25)。而把rstride = 1, cstride = 1去掉之后,我发现图形不变,说明 1 个距离是默认值。而且这两个参数只能是正整数,最小正整数就是 1(默认值),所以为了图形的平滑,基本上我们不需要修改这个参数。

验证

 

修改参数,使 rstride = 4

其结果如下:

如何深入理解Matplotlib3D 绘图函数plot_surface

3

32 / 4 = 8,x向的条纹数变成了 8 ,这符合我们的预期,看来我们得推测是正确的。

 

修改参数,同时使 rstride 和 cstride  = 4

其结果如下:

如何深入理解Matplotlib3D 绘图函数plot_surface

4

可以看到无论是 x 向,还是 y 向,条纹数都变成了 8 ,同时由于间距变大,图形也比原来更粗糙了。

这再一次验证了我们的推测是正确的!

关于如何深入理解Matplotlib3D 绘图函数plot_surface就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何深入理解Matplotlib3D 绘图函数plot_surface

本文链接: https://lsjlt.com/news/296436.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何深入理解Matplotlib3D 绘图函数plot_surface
    这篇文章给大家介绍如何深入理解Matplotlib3D 绘图函数plot_surface,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。今晚开始接触 Matplotlib 的 3D 绘图函数 plot_surface,真...
    99+
    2023-06-20
  • 深入理解C++函数栈帧
    目录一、什么是函数栈帧二、具体原理2.1 main函数的调用2.2 sum函数的调用参考:一、什么是函数栈帧 每一次函数调用都是一个过程,为函数开辟栈空间,用于本次函数调用中临时变量...
    99+
    2024-04-02
  • 深入理解C++内联函数
    目录内联函数的概念内联函数和宏内联函数的特性总结内联函数的概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数的使用...
    99+
    2024-04-02
  • matlab如何绘制函数图像
    今天小编给大家分享一下matlab如何绘制函数图像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。matlab绘制函数图像的方...
    99+
    2023-07-04
  • Python之split函数的深入理解
    目录一、split函数的官方定义二、split函数的深刻理解split函数主要应用场景是Python对字符串的处理中(数据分析,数据处理),以及计算机二级考试的常考基础知识点。 一、...
    99+
    2023-02-08
    Python split函数 Python split函数
  • python如何绘制三维函数图像图
    在python中使用matplotlib库绘制三维函数图像图,具体方法如下:import matplotlib as mplfrom mpl_toolkits.mplot3d import Axes3Dimport numpy as npi...
    99+
    2024-04-02
  • 深入理解SQL Server聚合函数原理
    SQL Server聚合函数是用来对一组值进行计算并返回一个单一值的函数。常见的聚合函数包括SUM、AVG、COUNT、MIN、MAX等。这些函数可以用来对查询结果集进行统计和计算,例如计算总和、平均值、最大值、最小值等。 SQL Serv...
    99+
    2024-08-03
    sql server
  • 如何深入理解select (*)
    这期内容当中小编将会给大家带来有关如何深入理解select count(*),文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。SELECT COUNT( * ) F...
    99+
    2024-04-02
  • PHP 函数如何深入分类?
    php 函数分为四类:内置函数、用户定义函数、核心函数和用户自定义扩展函数。内置函数无需加载即可使用,如 echo 函数。用户定义函数由用户创建,如 greet 函数。核心函数用于底层系...
    99+
    2024-04-18
  • 深入理解Python3 内置函数大全
    本文主要介绍了Python3 内置函数,分享给大家,具体如下: 内置函数 以下代码以Python3.6.1为例 #coding=utf-8 # builtin_function.py 内置函数 im...
    99+
    2022-06-04
    函数 大全
  • 如何理解可重入函数
    本篇内容介绍了“如何理解可重入函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1 前言最近在...
    99+
    2024-04-02
  • 深入理解golang函数中的错误处理
    go 语言中的错误处理机制允许您优雅地处理错误,避免应用程序崩溃。错误类型为 error 接口,包含错误消息字符串。错误处理语法包括:err 变量接收错误,if err != nil 块...
    99+
    2024-05-04
    golang 错误处理
  • 深入理解Ajax函数及其参数用法
    掌握常用的Ajax函数及其参数详解 Ajax(Asynchronous JavaScript and XML)是一种用于在客户端和服务器之间异步传输数据的技术。它能够实现无需刷新整个页面而更新部分内容,提升了用户体验和性能。本文...
    99+
    2024-01-26
    函数 ajax 参数详解
  • 关于JavaScript回调函数的深入理解
    目录前言快速回顾:JavaScript 函数什么是函数?声明一个函数调用一个函数什么是回调函数?为什么我们需要回调如何使用回调函数回调的工作方式Javascript 回调是异步的吗?...
    99+
    2024-04-02
  • c语言深入理解函数的递归
    前言:  首先,递归是什么,递归就是在定义函数时,然后在函数里调用这个函数,通俗讲,就是函数自己调用自己。那么递归的好处是什么呢?它能够将复杂的问题,用少量的代码来表示,增加了代码的...
    99+
    2024-04-02
  • 深入理解函数执行上下文this
    目录JavaScript 中的 this 是什么全局执行上下文中的 this函数执行上下文中的 this1. 通过函数的 call 方法设置2. 通过对象调用方法设置3. 通过构造函...
    99+
    2022-11-13
    函数执行上下文 this 执行上下文 this
  • 深入理解 Golang 函数地址的奥秘
    函数地址是指向函数代码的指针,可以使用 unsafe.pointer 获取。函数地址可传递给其他函数,例如打印函数名或按函数排序。它还允许使用函数指针类型断言来检查实现特定接口的函数。 ...
    99+
    2024-04-08
    golang 函数地址
  • C++ 函数调试详解:如何深入了解函数的执行过程?
    c++++ 函数调试的关键技能包括:1. 设置断点以暂停执行;2. 单步执行逐行查看代码;3. 检查变量监视值;4. 打印调试信息查看特定状态。通过实战案例,可以深入了解函数执行过程,快...
    99+
    2024-05-03
    c++ 函数调试
  • 深入理解golang函数的错误处理机制
    在 go 中,函数通过 error 变量表示错误,这是一个实现了 error() 方法的接口。如果函数成功执行,则 error 变量应为 nil。而要将错误从函数中传播出来,需要在函数签...
    99+
    2024-04-24
    golang 错误处理 标准库
  • 如何在python中使用subplots函数绘图
    这期内容当中小编将会给大家带来有关如何在python中使用subplots函数绘图,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作