今晚开始接触 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/1/23
# file_name: 3DTest
# github https://github.com/inspurer
# qq_mail 2391527690@qq.com # -*- coding: utf-8 -*-
"""
绘制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()

运行结果如下:

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

初探

旋转 3D 图形,

我发现无论是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个y向的间隔0.25.而把rstride = 1, cstride = 1去掉之后,我发现图形不变,说明1个距离是默认值。而且这两个参数只能是正整数,最小正整数就是1(默认值),所以为了图形的平滑,基本上我们不需要修改这个参数。

验证
修改参数,使 rstride = 4

其结果如下:

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

再修改参数,使 cstride 也 = 4

其结果如下:

可以看到无论是x向,还是y向,条纹数都变成了 8 ,同时由于间距变大,图形也比原来更粗糙了。
————————————————
原文链接:https://blog.csdn.net/ygdxt/article/details/86618606

deep_learning_Function_ Matplotlib 3D 绘图函数 plot_surface 的 rstride 和 cstride 参数的更多相关文章

  1. 数据分析与展示——Matplotlib基础绘图函数示例

    Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...

  2. Python3 matplotlib的绘图函数subplot()简介

    Python3 matplotlib的绘图函数subplot()简介 一.简介 matplotlib下, 一个 Figure 对象可以包含多个子图(Axes), 可以使用 subplot() 快速绘制 ...

  3. 数据分析与展示---Matplotlib基本绘图函数

    一:基本绘图函数(这里介绍16个,还有许多其他的) 二:pyplot饼图plt.pie的绘制 三:pyplot直方图plt.hist的绘制 (一)修改第二个参数bins:代表直方图的个数,均分为多段, ...

  4. 第二周 数据分析之展示 Matplotlib基础绘图函数实例

    Pyplot基础图表函数 Pyplot饼图的绘制: Pyplot直方图的绘制: Pyplot极坐标图的绘制: Pyplot散点图的绘制: 单元小结: import numpy as np import ...

  5. matplotlib plot 绘图函数发生阻塞(block)时的解决方法

    Is there a way to detach matplotlib plots so that the computation can continue? 在一般编辑器中: from matplo ...

  6. Python——matplotlib基础绘图函数示例

    1. 2.饼图 (1) import matplotlib.pyplot as plt labels='frogs','hogs','dogs','logs'% sizes=[15,30,45,10] ...

  7. 科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数)

    Mlab了解 Mlab是Mayavi提供的面向脚本的api,他可以实现快速的三维可视化,Mayavi可以通过Mlab的绘图函数对Numpy数组建立可视化. 过程为: .建立数据源 .使用Filter( ...

  8. 1.4 Matplotlib:绘图

    sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...

  9. 如何用Matplotlib绘制三元函数

    #!/usr/bin/env python #coding=GBK from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm ...

随机推荐

  1. PTA --- L1-006 连续因子

    题目地址 一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字.给定任一正整数 N,要求编写程序求出最长连续因子的个数,并 ...

  2. PTA --- L2-003 月饼

    这道题挺简单的,测试点2没过的话,注意题目中是两个正整数,而其余是正数 [没注意到,,,踩坑了,,,] 题目地址: https://pintia.cn/problem-sets/99480504638 ...

  3. LeetCode.1184-公交车站之间的距离(Distance Between Bus Stops)

    这是小川的第次更新,第篇原创 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第265题(顺位题号是1184).公交车有n个从0到n-1的车站,形成一个圆圈.我们知道所有相邻车站对之间的 ...

  4. maven 运行web工程

    1.使用命令mvn package,将工程打包成war包 2.把war包放置到tomcat的webapps目录下,运行tomcat

  5. PYTHON 100days学习笔记007-2:python数据类型补充(2)

    目录 day007:python数据类型补充(2) 1.Python3 元组 1.1 访问元组 1.2 删除元组 1.3 元组运算符 1.4 元组索引,截取 1.5 元组内置函数 2.python3 ...

  6. Git基本理解

    1.版本控制 Git 是一个分布式版本控制系统 (Distributed Version Control System - DVCS). 所谓版本控制,意思就是在文件的修改历程中保留修改历史,让你可以 ...

  7. jstl与EL表达式

    一·el表达式介绍 EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} ...

  8. hive的hiveserver2模式启动不起来,发现Hadoop一直处于安全模式

    hive的hiveserver2模式启动不起来,发现Hadoop一直处于安全模式 命令介绍 命令hadoop fs –safemode get 查看安全模式状态 命令hadoop fs –safemo ...

  9. 03 Python基础

    1.输出和输入 (1)print打印 Python 提供print方法来打印信息 输入: print ("hello python") 调用print方法,用户双引号(" ...

  10. 通过模板创建一个ABP项目

    ⒈下载 进入ABP模板页面,选择模板后下载 ⒉运行 1.初始化数据库 修改xxxx.Migrator.xxxx.Web.Host appsettings.json中的连接字符串 2.还原数据库 在Nu ...