Python 画 等高线图

news2024/12/23 10:03:01

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.coloradmin.cn/o/1991933.html

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

相关文章

ArcGIS中如何再画一个已经存在的相同属性地类图斑

1.打开边界后,创建要素界面模板下面的内容是空的 2.此时点击组织模板 3.点击新建模板 4.勾选要添加的图层、下一步完成即可。 5.此时创建要素模板就有内容了 6.想要画哪个地类就先点哪个地类,再开始画图即可。 注意:画出来的图斑仅继承了匹配…

TOMCAT远程代码执行

首先下载一个apache-tomcat8.5.39 进入bin目录找到setclasspath.bat 进入文件进行编辑 修改为自己java所在的路径 在bin目录下打开cmd运行startup.bat 然后在文件管理器中搜索cgi-bin 然后在里面创建bat文件存在内容 然后在网页中打开

“奥运精神、数智传递”安通达AI智能外呼系列·企业沟通的金牌选择

北京时间7月27日凌晨,备受瞩目的第三十三届奥林匹克运动会在浪漫之都法国巴黎正式开幕。在全世界各国代表队奋力拼搏、激烈比赛的同时,一束来自中国的科技之光,照亮了推动人工智能发展的道路。 “你好,我是张雨霏/邹敬园&#xff…

PAT 乙级 1022题

题目&#xff1a;D进制的AB 输入两个非负 10 进制整数 A 和 B (≤230−1)&#xff0c;输出 AB 的 D (1<D≤10)进制数。 输入格式&#xff1a; 输入在一行中依次给出 3 个整数 A、B 和 D。 输出格式&#xff1a; 输出 AB 的 D 进制数。 输入样例&#xff1a; 123 456 …

vulnhub靶机tomato记录

https://www.vulnhub.com/entry/tomato-1,557/ 过程 用nmap对目标主机做全端口扫描&#xff0c;dirb做目录扫描&#xff0c;结果如下&#xff1a; 8888端口开放一个web服务&#xff0c;存在Basic认证&#xff0c;试了爆破无果&#xff0c;sun-answerbook是一个在线文档系统&am…

第25课 Scratch入门篇:火箭升空

火箭升空 故事背景&#xff1a; 在未来的世界里&#xff0c;发射火箭机器人来到火箭基地&#xff0c;火箭机器人开始倒计时&#xff0c;当倒计时结束后&#xff0c;火箭飞上天空&#xff01;火箭在天空中越飞越远&#xff0c;越来越小&#xff01;&#xff01;&#xff01; …

拼多多一面0518

nginx作为http服务器&#xff0c;用来反向代理哪些资源 Web应用资源&#xff1a; Nginx最常用来代理Web应用服务器&#xff08;如Apache、Tomcat、Node.js等&#xff09;上的资源。客户端发送的请求首先到达Nginx&#xff0c;Nginx根据配置将请求转发给后端的Web应用服务器处理…

实时人脸换脸——基于C++与Onnxruntime调用GPU实现实时换脸

1、概述 1. 1 算法概述 人脸换脸是一种使用人工智能技术来实时或离线地将视频中的人脸替换成另一张人脸的技术。近年来&#xff0c;随着深度学习技术的发展&#xff0c;这一领域取得了显著进展。常见的人脸换脸项目有&#xff1a; Deepfake&#xff1a;这是最著名的换脸算法之…

递归深度问题和尾调用的关系

当我们在编写计算阶乘的函数&#xff0c;一般我们都会会选择使用迭代或递归的方法来实现。下面就让我们看看&#xff0c;同一个函数的两种实现方法。首先&#xff0c;是使用迭代方式实现的函数&#xff0c;我们使用循环的方式来计算阶乘&#xff1a; // 阶乘函数&#xff0c;计…

京东健康·全球医疗AI创新大赛初赛圆满结束!

近日&#xff0c;京东健康全球医疗AI创新大赛的初赛已顺利落下帷幕。本次大赛由京东健康发起&#xff0c;旨在探索医疗行业前沿技术与创新应用&#xff0c;携手产学研各界力量&#xff0c;推动医疗服务行业的高质量发展。 大赛聚焦“睡眠监测智能算法”与“医疗大模型创新应用”…

零基础入门转录组数据分析——机器学习算法之boruta(训练模型)

零基础入门转录组数据分析——机器学习算法之boruta&#xff08;训练模型&#xff09; 目录 零基础入门转录组数据分析——机器学习算法之boruta&#xff08;训练模型&#xff09;1. boruta基础知识2. boruta&#xff08;Rstudio&#xff09;——代码实操2. 1 数据处理2. 2 构建…

临床预测模型概述6-统计模型实操-单/多因素Cox回归

基础知识回顾&#xff1a; https://mp.weixin.qq.com/s/pXRZ1rYUr3lwH5OlDeB0_Q https://mp.weixin.qq.com/s/UVR6ZHCwhWqTfFBmPYPV9Q 接下来我们进行cox回归模型的实际操练。 简单回顾一下cox回归&#xff0c;在各种临床/基础数据分析中&#xff0c;经常需要分析各种影响/…

学校考场电子钟设置自动开关机,节能环保

在标准化考试中&#xff0c;准确的时间显示对于确保考试的公正性和秩序至关重要。然而&#xff0c;传统的电子钟系统往往存在一些问题&#xff0c;影响了考试管理的效率。 一、学校普通电子钟使用问题 二、学校考场电子钟优点 学校同步时钟系统通过自动同步网络或卫星时间的方式…

排序算法3:归并排序与计数排序

前言 Hello&#xff0c;小伙伴们&#xff0c;今天我们继续排序算法的学习&#xff0c;大家三连上车不迷路&#xff0c;我们现在开始今天的学习&#xff01;&#xff01;&#xff01; 1.归并排序 1.1归并排序的算法思想 归并排序&#xff08;MERGE_SORT&#xff09;是建立在归…

洗地机什么牌子最好?洗地机排行榜前十名大总结

在追寻现代家庭清洁新境界的旅程中&#xff0c;洗地机凭借其卓越的清洁效率成为了焦点。以下是我基于深入的市场调研、个人亲身体验以及广泛收集的用户反馈&#xff0c;精心整理出的一份洗地机品牌排行榜及特色亮点解析。请注意&#xff0c;以下排名并不代表绝对的优劣顺序&…

会展中心定位导航:一站式展会解决方案,招商管理系统与展位精准指引的数字化

在当今数字化浪潮下&#xff0c;会展中心作为连接全球商贸与文化的桥梁&#xff0c;其运营效率与参展体验成为衡量成功与否的关键指标。随着物联网、大数据及AI技术的飞速发展&#xff0c;智能定位导航系统应运而生&#xff0c;为会展中心带来了前所未有的变革。会展中心定位导…

线下支付场景之反扫支付

很多老板都在后台私信小编&#xff0c;你们牛卡派这些支付功能确实不错&#xff0c;但只局限于线上网站的场景&#xff0c;可我们没有技术&#xff0c;只是线下来收收款&#xff0c;有没有这方面的产品&#xff1f; 当然有&#xff01;&#xff01;我们牛卡派不仅专注于线上的支…

取消Edge浏览器自带的JSON格式化插件

取消Edge浏览器自带的JSON格式化插件 Edge 浏览器自带了 JSON 转换功能&#xff0c;即某个请求响应的是 JSON格式的数据的话 Edge浏览器则会完成自动转换。如图所示&#xff1a; 这样一来如果自己想要安装其他美观的 JSON 格式化工具则会发现不生效。如JSON Formatter 工具。 …

【YashanDB数据库】由于网络带宽不足导致的jdbc向yashandb插入数据慢

问题现象 某客户环境&#xff0c;客户的业务使用jdbc驱动向其他操作系统上的yashandb插入90万条数据&#xff0c;耗时大约30分钟。 问题的风险及影响 影响客户的业务处理效率 问题影响的版本 所有的yashandb版本 问题发生原因 jdbc执行batch insert时&#xff0c;是有绑…

基于Springboot + Vue的宿舍管理系统

前言 文末获取源码数据库 感兴趣的可以先收藏起来&#xff0c;需要学编程的可以给我留言咨询&#xff0c;希望帮助更多的人 精彩专栏推荐订阅 不然下次找不到哟 Java精品毕设原创实战项目 作者的B站地址&#xff1a;程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csd…