python画图|同时输出二维和三维图

news2024/9/22 15:56:11

前面已经学习了如何输出二维图和三维图,部分文章详见下述链接:

python画图|极坐标下的3D surface-CSDN博客

python画图|垂线标记系列_如何用pyplot画垂直x轴的线-CSDN博客 

有时候也需要同时输出二位和三维图,因此有必要学习一下。

【1】官网教程

首先我们打开官网教程,链接如下。

https://matplotlib.org/stable/gallery/mplot3d/mixed_subplots.html

我们把代码复制出来运行一下,获得的结果图很漂亮。

因此我们对代码做了解读。

【2】代码解读

首先是numpy和matplotlib引入。

import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算

然后迅速定义了一个函数:

def f(t): #定义函数f(t)
    return np.cos(2*np.pi*t) * np.exp(-t)

之后定义了要画2行一列图形:

# Set up a figure twice as tall as it is wide
fig = plt.figure(figsize=plt.figaspect(2.)) #定义图的大小
fig.suptitle('A tale of 2 subplots') #定义图名

进入画图阶段,先定义二维图画法:

# First subplot
ax = fig.add_subplot(2, 1, 1) #定义2行一列图

t1 = np.arange(0.0, 5.0, 0.1) #定义变量
t2 = np.arange(0.0, 5.0, 0.02) #定义变量
t3 = np.arange(0.0, 2.0, 0.01) #定义变量

ax.plot(t1, f(t1), 'bo', #输出第一个二维图
        t2, f(t2), 'k--', markerfacecolor='green')
ax.grid(True) #画网格
ax.set_ylabel('Damped oscillation') #定义Y轴

在定义三维图画法:

# Second subplot
ax = fig.add_subplot(2, 1, 2, projection='3d') #定义第二个图为3D图

X = np.arange(-5, 5, 0.25)#定义变量
Y = np.arange(-5, 5, 0.25)#定义变量
X, Y = np.meshgrid(X, Y) #定义变量,让XY充分组合
R = np.sqrt(X**2 + Y**2) ##定义变量
Z = np.sin(R) #定义变量

surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, #输出surface图
                       linewidth=0, antialiased=False)
ax.set_zlim(-1, 1) #设置Z轴

最后一步,将图形稳稳输出:

plt.show() #输出图形

【3】修改代码

首先考虑到二维图中自变量是重合的,将其拆分后:

t1 = np.arange(0.0, 2.0, 0.1) #定义变量
t2 = np.arange(2.0, 5.0, 0.02) #定义变量
t3 = np.arange(5.0,7.0, 0.01) #定义变量

 现在自变量变成连续的区间。

然后将不同自变量对应的因变量用不同的颜色和线型区分:

ax.plot(t1, f(t1), 'bo', #输出第一个二维图
        t2, f(t2), 'k--',
        t3,f(t3),markerfacecolor='red')

此时的输出结果为:

图2

由图2氪可见,上面的子图输出了连续但不同线型不同颜色的二维图,下面输出了三维图。

【4】改写代码

首先考虑到将surface图改成好看的渐变色,增加cmap设置:

surf = ax.plot_surface(X, Y, Z, cmap=plt.cm.PuBuGn,rstride=1, cstride=1, #输出surface图
                       linewidth=0, antialiased=False)

然后在增加一个surface图:

ax = fig.add_subplot(1, 3, 3, projection='3d') #定义第二个图为3D图
X1 = np.arange(5, 15, 0.25)#定义变量
Y1 = np.arange(5, 15, 0.25)#定义变量
X1, Y1 = np.meshgrid(X1, Y1) #定义变量,让XY充分组合
R1 = np.sqrt(X1**2 + Y1**2) ##定义变量
Z1= np.sin(R1) #定义变量

surf1 = ax.plot_surface(X1, Y1, Z1, cmap='summer_r',rstride=1, cstride=1, #输出surface图
                       linewidth=0, antialiased=False)
ax.set_zlim(-1, 1) #设置Z轴

为了让图形好看,我们提前将图形设置成了1行3列:

ax = fig.add_subplot(1, 3, 1) #定义1行3列图

运行结果为:

图3

由图3可见,横向输出了二维和三维图。

【5】总结

学习了同时输出二维和三维图,掌握了图形坐标和颜色设置。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2139188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三明儿童自闭症寄宿制学校:关爱、教育、成长一站式服务

三明儿童自闭症寄宿制学校的启示:广州星贝育园——自闭症儿童的一站式成长乐园 在探讨自闭症儿童教育的道路上,寄宿制学校以其独特的优势,为孩子们提供了集关爱、教育、成长于一体的全方位服务。虽然文章开头提及了“三明儿童自闭症寄宿制学…

AI预测体彩排3采取888=3策略+和值012路或胆码测试9月15日升级新模型预测第81弹

经过80多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,已到达90%的命中率,这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了,大部…

请求响应-05.请求-日期参数JSON参数

一.日期参数 当浏览器发起的请求参数类型是日期参数时,我们通常使用LocalDateTime对象来接收,前面使用DateTimeFormat注解来完成日期的格式转换(日期时间格式有多种,需要哪种就设置为哪种:如yyyy-MM-dd HH:mm:ss&…

C++比大小游戏

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #include <iostream> #include <Windows.h> using namespace std; int main() {int ir 1;char chparr[2] { 0 };int ip1 0;int ip2 0;int i 1;c…

【ARM】Cache深度解读

Cache的基本概念和使用场景 不同的Master硬件共享数据时—invalid cache 外设和DDR之间没有cache&#xff0c;所以外设直接把数据写入DDR中&#xff0c;但是cpu和DDR之间有cache&#xff0c;cpu会首先访问cache&#xff0c;如果命中直接从cache中拿数据&#xff0c;但是此时的…

完整版订单超时自动取消功能

前几天对实习还是继续学习技术产生了抉择&#xff0c;问了一个前辈&#xff0c;他抛给我一个问题&#xff0c;怎么做15分钟订单自动取消&#xff0c;我说然后到时间之后&#xff0c;自动执行这个订单关闭业务&#xff0c;比如把锁了的库存给解开等等操作&#xff0c;然后在数据…

后续学习规划 ----含我个人的学习路线,经历及感受

目前的基础 开发相关&#xff08;最重要&#xff09; 1.Java SE 从入门到起飞 2.Java Web开发 3.苍穹外卖 以上三个是和开发相关的基础。 我是按照书写的顺序学习的&#xff0c;有需要的朋友可以参考。 计算机相关 其他的话&#xff0c;都是比较久远的了。隔得时间一年半…

【大数据方案】智慧大数据平台总体建设方案书(word原件)

第1章 总体说明 1.1 建设背景 1.2 建设目标 1.3 项目建设主要内容 1.4 设计原则 第2章 对项目的理解 2.1 现状分析 2.2 业务需求分析 2.3 功能需求分析 第3章 大数据平台建设方案 3.1 大数据平台总体设计 3.2 大数据平台功能设计 3.3 平台应用 第4章 政策标准保障体系 4.1 政策…

nginx: [emerg] unknown “connection_upgrade“ variable 解决与思考

问题,如下图&#xff1a; 一天更新完主分支后启动nginx,结果报错&#xff1a;nginx: [emerg] unknown "connection_upgrade" variable 解决方法 网上查&#xff0c;发现是nginx配置文件出了问题&#xff0c;将下面map代码块补上即可。 http { map $http_upgrade …

深入理解算法效率:时间复杂度与空间复杂度

目录 引言 一、算法效率的基础 二、时间复杂度 1.概念 2.常见类型 1.O(1) — 常数阶 2.O(n) — 线性阶 3.O(n^2) — 平方阶 4.O(2^&#x1d45b;) — 指数阶 5.O(log &#x1d45b;) — 对数阶 3.总结 三、空间复杂度 1.概念 2.常见类型 1.O(1) — 常数阶 2.…

Linux进程(3)(进程优先级 - 优先级 - 命令行参数 - 环境变量)

目录 1.进程优先级 1&#xff09;什么是优先级 2&#xff09;为什么要有优先级 3&#xff09;Linux的优先级特点 && 查看方式 2.命令行参数和环境变量 3.环境变量 1&#xff09;直接现象 2&#xff09;见见更多的环境变量 3&#xff09;整体理解环境变量和系统…

【UEFI基础】BIOS模块执行的优先级

综述 BIOS下主要通过两种方式来确定一般模块的优先级&#xff0c;一种是fdf文件中指定的优先级&#xff0c;另一种是inf文件中指定的优先级。需要注意这里使用了“一般模块”的说法&#xff0c;因为有些模块&#xff08;尤其是PEI_CORE&#xff0c;DXE_CORE类型的模块&#xf…

Codeforces Round 972(Div.2)A+B

Codeforces Round 972&#xff08;Div.2&#xff09;ABC 昨天晚上做了Codeforces Round 972&#xff08;Div.2&#xff09;的A、B两道题&#xff0c;今天补一下思路。 题目来源&#xff1a;https://codeforces.com/contest/2005 A. Simple Palindrome 题目描述 输入输出样例…

linux---压缩打包

linux打包和压缩文件和目录&#xff1a; 归档(打包)命令&#xff1a;tar 归档就是将多个文件或者目录打包成为一个文件&#xff0c;存放再磁盘中&#xff0c;方便文件或者目录丢失时&#xff0c;可以恢复。 归档文件名使用相对路径 &#xff08;注意区分归档文件和被归档文…

Go 注册Nacos

根据需要GO 项目也接入Nacos 系统版本&#xff1a;Linux 5.4.18-87.76-generic KYLINOS SMP Thu Aug 31 09:05:44 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux Go:1.19.4 1.查看Nacos-sdk-go 官方适配自己的工程 github.com/nacos-group/nacos-sdk-go NacosManager.go p…

【自动化测试】UI自动化的分类、如何选择合适的自动化测试工具以及其中appium的设计理念、引擎和引擎如何工作

引言 UI自动化测试主要针对软件的用户界面进行测试&#xff0c;以确保用户界面元素的交互和功能符合预期 文章目录 引言一、UI自动化的分类1.1 基于代码的自动化测试1.2 基于录制/回放的自动化测试1.3 基于框架的自动化测试1.4 按测试对象分类1.5 按测试层次分类1.6 按测试执行…

[产品管理-21]:NPDP新产品开发 - 19 - 产品设计与开发工具 - 详细设计与规格定义

目录 前言&#xff1a; 一、详细设计与规格定义概述 1、产品详细设计 2、规格定义 3、详细设计与规格定义的关系 4、实际应用中的注意事项 二、详细设计与规格定义主要工具 2.1 质量功能展开QFD - 需求跟踪矩阵 1、QFD的基本原理 2、QFD的实施步骤 3、QFD的优势与应…

智能赋能,Vatee万腾平台助力企业升级新高度

在当今这个日新月异的数字时代&#xff0c;智能技术的飞速发展正以前所未有的力量重塑着各行各业的面貌。作为这一变革浪潮中的佼佼者&#xff0c;Vatee万腾平台凭借其卓越的智能赋能能力&#xff0c;正引领众多企业迈向转型升级的新高度&#xff0c;开启了智能化发展的新篇章。…

【性能优化】分块

性能优化-tiling过程 这张图展示了在硬件和软件两个层面上执行矩阵乘法 C + = A B C += AB C+

560 和为k的子数组

解题思路&#xff1a; \qquad 一开始看到连续非空序列&#xff0c;会想到是不是可以用双指针表示一个区间&#xff0c;然后通过一次遍历找出所有可能的区间&#xff0c;但看到元素的取值区间就知道行不通&#xff0c;这个方法仅适用于数组元素大于等于0的情况。若数字是负数&a…