当前位置: 首页 > news >正文

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

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

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')

此时的输出结果为:

bf82240faf6f41c5bd93b2b9d0797905.png

图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列图

运行结果为:

6541ab2c430b4e18be1836c5f088dcfa.png

图3

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

【5】总结

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

 

 

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 学习使用在windows系统上安装vue前端框架以及环境配置图文教程
  • Python快速入门 —— 第二节:函数与控制语句
  • macOS上谷歌浏览器的十大隐藏功能
  • maya-vray渲染蒙版
  • 高级Java程序员必备的技术点:你准备好了吗?
  • 图数据库 neo4j 安装
  • Scrapy 2.6 Spider Middleware 爬虫页中间件基本使用
  • 优化安防视频监控的关键体验:视频质量诊断技术如何应用在监控系统中?
  • 【字符串】AC自动机+dp
  • 基于YOLO深度学习和百度AI接口的手势识别与控制项目
  • 2. 变量和指令(omron 机器自动化控制器)——1
  • 速通LLaMA1:《LLaMA: Open and Efficient Foundation Language Models》全文解读
  • 基于http请求的一种安全校验认证方案记录
  • 一个矩阵的行数和列数可能不同,为什么它的行秩和列秩始终相同
  • TCP交互通讯在Windows中的频率
  • [deviceone开发]-do_Webview的基本示例
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • express.js的介绍及使用
  • jquery ajax学习笔记
  • JSDuck 与 AngularJS 融合技巧
  • mysql常用命令汇总
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 阿里云应用高可用服务公测发布
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 力扣(LeetCode)965
  • 如何使用 JavaScript 解析 URL
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 使用parted解决大于2T的磁盘分区
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 学习使用ExpressJS 4.0中的新Router
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #if #elif #endif
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (12)Hive调优——count distinct去重优化
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (7)svelte 教程: Props(属性)
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (动态规划)5. 最长回文子串 java解决
  • (强烈推荐)移动端音视频从零到上手(上)
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)linux 命令大全
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .CSS-hover 的解释
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core跨平台微服务学习资源
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 药厂业务系统 CPU爆高分析
  • .NET 中让 Task 支持带超时的异步等待