Python 画 等高线图

Python 画 等高线图

flyfish

通过三维图形与投影等高线相结合的方式,能够直观地看到三维函数的形状以及在平面上等值线的分布。

等高线是一种用来表示三维表面在二维平面上的方法。它们是通过在固定高度(或深度)处切割三维表面来创建的平面曲线。每条等高线代表一个常数值,通常被称为“标高”或“高度”。等高线图广泛用于地形图、气象图、工程制图等领域,以表示高度、压力、温度等数据的变化。

特点:
  1. 高度相等 :同一条等高线上的所有点具有相同的标高。
  2. 等高线间距 :相邻等高线之间的垂直距离(即“间距”)表示高度变化的大小。等高线密集的区域表示斜度较陡,而等高线稀疏的区域表示斜度较缓。
  3. 闭合或开口 :等高线可能是闭合的环形,表示孤立的高峰或低谷;也可能是开口的,延伸到图的边缘。

等高线可以应用于表示山丘、山谷、平原等地形特征。显示气压、温度等气象数据的分布。表示压力、速度、浓度等物理量的分布。

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 定义函数 f(x, y) = x^2 + y^2
def f(x, y):return x**2 + y**2# 定义 x 和 y 的范围
x = np.linspace(-5, 5, 400)
y = np.linspace(-5, 5, 400)# 创建网格数据
X, Y = np.meshgrid(x, y)
Z = f(X, Y)# 创建图形
fig = plt.figure(figsize=(14, 6))# 添加三维子图
ax1 = fig.add_subplot(121, projection='3d')
ax1.plot_surface(X, Y, Z, cmap='viridis', alpha=0.8)
ax1.contour(X, Y, Z, zdir='z', offset=0, levels=20, cmap='viridis')# 设置三维图的标签
ax1.set_title('三维曲面图')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_zlabel('z')# 添加等高线图子图
ax2 = fig.add_subplot(122)
contour = ax2.contour(X, Y, Z, levels=20, cmap='viridis')
ax2.clabel(contour, inline=True, fontsize=8)# 设置等高线图的标签
ax2.set_title('等高线图')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.axhline(0, color='black', linewidth=0.5)
ax2.axvline(0, color='black', linewidth=0.5)
ax2.grid(color='gray', linestyle='--', linewidth=0.5)# 显示图形
plt.tight_layout()
plt.show()

np.meshgrid

X, Y = np.meshgrid(x, y)
功能: 创建二维网格坐标矩阵。
np.meshgrid(x, y):
x 和 y 是一维数组,代表两个方向上的坐标范围。
np.meshgrid 函数生成两个二维数组 X 和 Y,用于表示坐标平面上所有点的 x 和 y 坐标。
X 中的每一行都是 x 的复制。
Y 中的每一列都是 y 的复制。
这样生成的 X 和 Y 可以用于计算每个点上的函数值,形成一个 z 值的网格

plt.figure

fig = plt.figure(figsize=(14, 6)) 是 Matplotlib 中用于创建图形对象的一行代码。
plt.figure() 是 Matplotlib 的 pyplot 模块中的一个函数,用于创建一个新的图形窗口或绘图区域。
figsize=(14, 6) 参数指定了图形窗口的大小,以英寸为单位。
参数说明
figsize: 一个包含两个元素的元组 (width, height),指定图形的宽度和高度。
width: 图形的宽度,这里是 14 英寸。
height: 图形的高度,这里是 6 英寸。

这个图形被分成两个子图(ax1 和 ax2),每个子图占据窗口的一半。

fig.add_subplot

ax1 = fig.add_subplot(121, projection=‘3d’)
功能: 在现有的图形 fig 中添加一个新的子图,并将其设置为三维投影。
add_subplot(121, projection=‘3d’):
121: 表示子图的布局方式。
第一个数字 1 表示总共有 1 行子图。
第二个数字 2 表示总共有 2 列子图。
第三个数字 1 表示这个子图是第一个位置。
projection=‘3d’: 指定这个子图为三维图形。这是通过 mpl_toolkits.mplot3d 模块实现的。

ax1.plot_surface

ax1.plot_surface(X, Y, Z, cmap=‘viridis’, alpha=0.8)
功能: 在三维子图上绘制一个表面图。
plot_surface(X, Y, Z, …):
X, Y, Z: 代表三维空间中的点,这些点构成了表面。
X 和 Y 是通过 np.meshgrid() 函数创建的网格坐标,用于定义二维平面上的坐标点。
Z 是函数值 f(X, Y),代表每个 (X, Y) 点的高度。
cmap=‘viridis’: 使用 viridis 颜色映射来渲染表面。viridis 是一种从黄色到蓝绿色的渐变色彩映射。
alpha=0.8: 设置表面的透明度,0 表示完全透明,1 表示完全不透明。这里设置为 0.8 表示略微透明。

ax1.contour

ax1.contour(X, Y, Z, zdir=‘z’, offset=0, levels=20, cmap=‘viridis’)
功能: 在三维图上绘制等高线并将它们投影到 xy 平面上。
contour(X, Y, Z, …):
X, Y, Z: 与上面相同,定义了等高线图的坐标和高度。
zdir=‘z’: 指定将等高线沿 z 方向投影到 xy 平面上。
offset=0: 将等高线投影到 z=0 平面上,这意味着等高线被绘制在 xy 平面上。
levels=20: 设置等高线的数量,这里是 20 个等高线级别。
cmap=‘viridis’: 与表面图相同,使用 viridis 颜色映射来渲染等高线。

在等高线图中,每条等高线对应一个特定的函数值(或高度),也就是等高线图中的一个“水平面”切片。等高线的值由我们指定的等高线级别(levels)来决定。levels=20 是指定在图中绘制 20 条等高线,Matplotlib 会自动选择这些等高线的具体值。 当使用 levels=20 时,Matplotlib 将自动计算从函数最小值到最大值之间的 20 个均匀间隔的等高线值。
也就是我们看到等高线图中的2.5、5.0、7.5等

ax2.clabel

ax2.clabel(contour, inline=True, fontsize=8)
功能: 给等高线图添加标签。
ax2.clabel(contour, …):
contour 是等高线图的返回对象,它包含了等高线的所有信息。
inline=True:表示标签将被放置在等高线上,并与线条对齐,使得标签看起来像嵌在等高线中。
fontsize=8: 设置标签文字的大小为 8 点。

ax2.axhline

ax2.axhline(0, color=‘black’, linewidth=0.5)
功能: 在二维平面上绘制一条水平线。
ax2.axhline(0, …):
在 y=0 的位置绘制一条水平线。
color=‘black’: 设置水平线的颜色为黑色。
linewidth=0.5: 设置线条宽度为 0.5,线条较细。

ax2.grid

ax2.grid(color=‘gray’, linestyle=‘–’, linewidth=0.5)
功能: 设置二维图上的网格线样式。
ax2.grid(…):
color=‘gray’: 设置网格线的颜色为灰色。
linestyle=‘–’: 设置网格线的样式为虚线。
linewidth=0.5: 设置网格线的宽度为 0.5。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java零基础之多线程篇:不得不学的并发工具类!

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

数学建模--智能算法之鱼群算法

目录 核心原理 应用与实现 实现步骤 性能分析与改进 鱼群算法在解决哪些具体优化问题方面表现最佳? 如何根据不同的应用场景调整鱼群算法的参数设置以提高其性能? 鱼群算法与其他群体智能优化算法(如遗传算法、粒子群优化)…

C++ | Leetcode C++题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; class Solution { public:string removeDuplicateLetters(string s) {vector<int> vis(26), num(26);for (char ch : s) {num[ch - a];}string stk;for (char ch : s) {if (!vis[ch - a]) {while (!stk.empty() && stk.back(…

html+css前端作业和平精英2个页面(无js)

htmlcss前端作业和平精英2个页面&#xff08;无js&#xff09;有视频播放器等功能效果 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改…

lvs的dr模式综合实践

目录 ​编辑虚拟机准备工作 ​编辑​编辑​编辑 配置过程 配置client主机 配置router主机 配置lvs主机&#xff08;vip使用环回来创建&#xff09; 配置server1主机&#xff08;vip使用环回来创建&#xff09; 配置server2主机&#xff08;vip使用环回来创建&#xff0…

《数据结构》(C语言版)第1章 绪论(下)

第1章 绪论 1.3 抽象数据类型的表示与实现1.4 算法与算法分析 1.3 抽象数据类型的表示与实现 数据类型 数据类型是一组性质相同的值的集合, 以及定义于这个集合上的一组运算的总称。 抽象数据类型(ADTs: Abstract Data Types) 更高层次的数据抽象。由用户定义&#xff0c;用…

3DM游戏运行库合集离线安装包2024最新版

3DM游戏运行库合集离线安装包是一款由国内最大的游戏玩家论坛社区3DM推出的集成式游戏运行库合集软件&#xff0c;旨在解决玩家在玩游戏时遇到的运行库缺失或错误问题。该软件包含多种常用的系统运行库组件&#xff0c;支持32位和64位操作系统&#xff0c;能够自动识别系统版本…

快速上手AWS cloudfront产品

AWS CloudFront&#xff0c;亚马逊推出的卓越全球内容分发网络服务&#xff0c;专为加速网站内容的极速传输而设计&#xff0c;旨在大幅度削减加载延迟&#xff0c;同时确保内容传递过程中的高度安全性和无懈可击的可靠性。借助CloudFront的强大功能&#xff0c;用户能够轻松实…

腾讯云服务器windows系统如何转linux系统

本人购买了腾讯云服务&#xff0c;进去后发现是windows系统的&#xff0c;有点郁闷&#xff08;使用不习惯&#xff09;&#xff0c;于是就去查查看看能不能将Windows系统转成linux系统&#xff0c;网上也有解决办法&#xff0c;但是貌似跟现在的腾讯云后台不一致&#xff0c;下…

Flink学习之Flink SQL(补)

Flink SQL 1、SQL客户端 1.1 基本使用 启动yarn-session yarn-session.sh -d启动Flink SQL客户端 sql-client.sh--退出客户端 exit;测试 重启SQL客户端之后&#xff0c;需要重新建表 -- 构建Kafka Source -- 无界流 drop table if exists students_kafka_source; CREATE TABL…

软件生命周期(二)

1. 软件生命周期定义 软件生命周期&#xff08;SDLC&#xff09;是软件开始研制到最终废弃不用所经历的各个阶段 – 软件开发模型 2. 瀑布型生命周期模型 瀑布模型规定自上而下&#xff0c;相互衔接的固定次序&#xff0c;如同瀑布流水&#xff0c;逐级下落&#xff0c;具有…

sqli-labs(超详解)——Lass32~Lass38

Lass32&#xff08;宽字节注入&#xff09; 源码 function check_addslashes($string) {$string preg_replace(/. preg_quote(\\) ./, "\\\\\\", $string); //escape any backslash$string preg_replace(/\/i, \\\, $string); …

double类型 精度丢失的问题

前言 精度丢失的问题是在其他计算机语言中也都会出现&#xff0c;float和double类型的数据在执行二进制浮点运算的时候&#xff0c;并没有提供完全精确的结果。产生误差不在于数的大小&#xff0c;而是因为数的精度。 一、double进行运算时,经常出现精度丢失 0.10.2使用计算…

记录一次网关无响应的排查

1. 使用jstack pid > thread.txt 打印进 thread.txt 文件里 去观察线程的状态。 我发现&#xff0c;一个线程在经过 rateliter的prefilter后, 先是调用 consume方法&#xff0c;获取到锁。 接着在执行 jedis的 evalsha命令时 一直卡在socket.read()的状态。 发现jedis官…

软件测试必备技能

在软件测试领域&#xff0c;以下是一些必备的技能和能力&#xff0c;可以帮助你成为一名优秀的软件测试工程师&#xff1a; 1. 测试基础知识&#xff1a; 熟悉软件测试的基本概念、原则和流程&#xff0c;包括不同类型的测试&#xff08;如单元测试、集成测试、系统测试&#…

这几个高级爬虫软件和插件真的强!

亮数据&#xff08;Bright Data&#xff09; 亮数据是一款强大的数据采集工具&#xff0c;以其全球代理IP网络和强大数据采集技术而闻名。它能够轻松采集各种网页数据&#xff0c;包括产品信息、价格、评论和社交媒体数据等。 网站&#xff1a;https://get.brightdata.com/we…

LLM(大语言模型)「Agent」开发教程-LangChain(三)

v1.0官方文档&#xff5c;最新文档 一、LangChain入门开发教程&#xff1a;Model I/O 二、基于LangChain的RAG开发教程 LangChain是一个能够利用大语言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;能力进行快速应用开发的框架&#xff1a; 高度抽象的组件…

智能仪表板DevExpress Dashboard v24.1 - 新增级联参数过滤

使用DevExpress Analytics Dashboard&#xff0c;再选择合适的UI元素&#xff08;图表、数据透视表、数据卡、计量器、地图和网格&#xff09;&#xff0c;删除相应参数、值和序列的数据字段&#xff0c;就可以轻松地为执行主管和商业用户创建有洞察力、信息丰富的、跨平台和设…

揭秘LoRA:利用深度学习原理在Stable Diffusion中打造完美图像生成的秘密武器

文章目录 引言LoRA的原理LoRA在角色生成中的应用LoRA在风格生成中的应用LoRA在概念生成中的应用LoRA在服装生成中的应用LoRA在物体生成中的应用结论 引言 在生成式人工智能领域&#xff0c;图像生成模型如Stable Diffusion凭借其出色的生成效果和广泛的应用场景&#xff0c;逐…

NVIDIA Triton系列03-开发资源说明

NVIDIA Triton系列03-开发资源说明 大部分要学习 Triton 推理服务器的入门者&#xff0c;都会被搜索引擎或网上文章引导至官方的 https://developer.nvidia.com/nvidia-triton-inference-server 处&#xff08;如下截图&#xff09;&#xff0c;然后从 “Get Started” 直接安…