iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python作图基础之plt.contour实例详解
  • 365
分享到

python作图基础之plt.contour实例详解

2024-04-02 19:04:59 365人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言使用示例plt.contour()函数本身plt.contour()图中的坐标补充:plt.contour等高线绘制总结前言 plt.contour是python中用于画等高

前言

plt.contour是python中用于画等高线的函数,这里介绍一下plt.contour的使用。

使用示例

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 50)  # 生成连续数据
y = np.linspace(-3, 3, 50)  # 生成连续数据
X, Y = np.meshgrid(x, y)    
# 生成能够在坐标系中形成点阵的数组,这个可以去参考一下别的文章
# https://lixiaoqian.blog.csdn.net/article/details/81532855 这里讲的比较详细
Z = X**2 + Y**2     # 这里将高度设置为x^2+y^2,就能画一个圆形的等高线
C=plt.contour(x, y,Z,[2,5,8,10])  # 画等高线 # 使用plt.contour(X, Y,Z,[2,5,8,10])也是没问题的
plt.clabel(C, inline=True, fontsize=10)

画出来的效果就是:

plt.contour()函数本身

plt.contour(X, Y, Z, [levels], **kwargs)

  • plt就是matplotlib.pyplot
  • X, Y表示的是坐标位置(这里是可选的,但是如果不传入的话就是Python根据传入的高度数组(Z)的大小自动生成的坐标),一般很多会使用二维数组,但是实际上一维数组也可以的
  • Z代表每个坐标对应的高度值,是一个二维数组,其中每个值表示的是每个坐标对应的高度 XYZ的实际数据构成可以参照上面的例子,在本地查看一下数据是长什么样
  • levels有两种传入形式。一种是传入一个整数,这个整数表示你想绘制的等高线的条数,但是显示结果可能并不是完全和传入的整数的条数一样,是大致差不多的条数(可能相差一两条)(为什么是大致条数呢?可能是python帮你默认生成的比较合适的几条等高线吧)。还有一种方式就是传入一个包含高度值的一维数组,这样python便会画出传入的高度值对应的等高线。
  • 其余的参数cmap, linewidths, linestyles等这里就不多介绍了

plt.contour()图中的坐标

由于一开始这里很混淆,因此在这里对坐标代表的内容进行一个解释。要解释这个问题,首先可以引入实际问题,比如一座山,一般来说从飞机上或者很高的地方观察这座山的话能看到这座山就像圆一样,如果抽象成平面的话就成为一个圆了(这里是指比较规整的山啊)。然后实际上等高线就是从这样很高的地方去想象的,通过一系列工具把相同高度的位置在一个平面上标注出来,相同高度的位置通过线连起来就形成了等高线。

如果把刚刚说的圆放在坐标系中,那么某个坐标(x,y)就表示观察到的这座山在平面视角来看所展现出来的位置,如下图:

左边假设是一座山,上面的红色的点在平面视角来看的话就成为坐标系中的一个位置,此时高度已经在等高线图中反映不出来了,这也是为什么等高线的图需要标注高度值。

这里结合三维图来看会更加直观:将上面的圆形的等高线图的高度用三维图像展示出来,使用代码为:

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3D import Axes3D
import numpy as np

x = np.linspace(-3, 3, 50)
y = np.linspace(-3, 3, 50)
X, Y = np.meshgrid(x, y)
Z = X**2 + Y**2 
C=plt.contour(x, y,Z,[2,5,8,10])
plt.clabel(C, inline=True, fontsize=10)

fig=plt.figure()
fig = plt.figure(figsize=(10,10))
ax1 = plt.axes(projection='3d')

ax1.scatter3D(X,Y,z, cmap='Blues')

效果如下:

图中X,Y,Z都分别被转换为了三维坐标系中的坐标,形成了一个类似球形的一个部分的高度图。Z轴就是每个点对应的高度值,这里试想如果把整张图从最顶部投下到xy二维坐标系中,如果取开始的某几个固定的高度值(如2,5,8),那么这几个固定的高度值所对应的坐标在二维坐标系中连起来的话就成为了一条等高线。

这里可以多看几个例子:

x = np.linspace(-3, 3, 50)
y = np.linspace(-3, 3, 50)
X, Y = np.meshgrid(x, y)
z = (np.exp(-X**2 - Y**2) - np.exp(-(X - 1)**2 - (Y - 1)**2))*2

fig=plt.figure()
fig = plt.figure(figsize=(10,10))
ax1 = plt.axes(projection='3d')
ax1.scatter3D(X,Y,z, cmap='Blues')

效果:

其二维图为:

叮!

不学不知道,学了才知道什么都不是想象的那么简单啊。

补充:plt.contour等高线绘制

import numpy as np
import matplotlib.pyplot as plt
 
 
def height(x, y):
    return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)
 
 
x = np.linspace(-3, 3, 300)
y = np.linspace(-3, 3, 300)
X, Y = np.meshgrid(x, y)
# 为等高线填充颜色 10表示按照高度分成10层
plt.contourf(X, Y, height(X, Y), 10, alpha=0.75, cmap=plt.cm.hot)
C = plt.contour(X, Y, height(X, Y), 10, colors='black')
# 绘制等高线标签
plt.clabel(C, inline=True, fontsize=10)
# 去掉坐标轴刻度
# plt.xticks(())
# plt.yticks(())
plt.show()
# 显示图片

参考:Https://blog.csdn.net/qq_42505705/article/details/88771942

总结

到此这篇关于python作图基础之plt.contour的文章就介绍到这了,更多相关python作图plt.contour内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python作图基础之plt.contour实例详解

本文链接: https://www.lsjlt.com/news/119007.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python作图基础之plt.contour实例详解
    目录前言使用示例plt.contour()函数本身plt.contour()图中的坐标补充:plt.contour等高线绘制总结前言 plt.contour是python中用于画等高...
    99+
    2024-04-02
  • Python之基础函数案例详解
    函数就是把具有独立功能的代码块封装成一个小模块,可以直接调用,从而提高代码的编写效率以及重用性, 需要注意的是, 函数需要被调用才会执行, 而调用函数需要根据函数名调用 ...
    99+
    2024-04-02
  • Python基础Lists和tuple实例详解
    目录Lists索引和切片增删改增删除改连接/拼接tuple解包元素是可变的仍然可变namedtupleLists 列表可以包含不同类型的元素,甚至是Lists,但是通常是同一个类型的...
    99+
    2024-04-02
  • Python基础之模块详解
    目录一、模块1、模块的四种形式2、为什么要用模块?二、如何用模块1、import 模块名导入重命名:smt变量指向span模块的名称空间导入多个模块2、from 模块名 import...
    99+
    2024-04-02
  • Python基础之元类详解
    1.python 中一切皆是对象,类本身也是一个对象,当使用关键字 class 的时候,python 解释器在加载 class 的时候会创建一个对象(这里的对象指的是类而非类的实例)...
    99+
    2024-04-02
  • Python基础之进程详解
    目录一、前言二、基本用法三、创建单个进程四、创建多个进程五、进程池六、锁七、进程间通信八、信号量九、数据共享十、总结一、前言 进程,一个新鲜的字眼,可能有些人并不了解,它是系统某个运...
    99+
    2024-04-02
  • java基础之注解示例详解
    目录定义作用注解与注释的区别JDK内置的标准注解自定义注解@Target属性定义 注解也叫原数据,它是JDK1.5及之后版本引入的一个特性,它可以声明在类、方法、变量等前面,用来对这...
    99+
    2024-04-02
  • Java 基础之内部类详解及实例
     Java 基础之内部类详解及实例内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,...
    99+
    2023-05-31
    java 内部类 ava
  • Python Pandas基础操作详解
    目录数据结构&Series:DataFrame的构建:索引操作:DataFrame基本操作:广播运算:索引增删改查:字符串元素处理:数据规整:总结数据结构&Serie...
    99+
    2024-04-02
  • 详解Python+OpenCV进行基础的图像操作
    目录介绍形态变换腐蚀膨胀创建边框强度变换对数变换线性变换去噪彩色图像使用直方图分析图像介绍 众所周知,OpenCV是一个用于计算机视觉和图像操作的免费开源库。 OpenCV 是用 C...
    99+
    2024-04-02
  • python基础之装饰器详解
    目录一、前言二、高阶函数三、函数嵌套四、装饰器4.1 被装饰方法带返回值4.2 被装饰方法带参数4.3 验证功能装饰器4.4 验证功能装饰器——带参数一、前言 装...
    99+
    2024-04-02
  • Python基础详解之描述符
    目录一、描述符定义二、描述符的种类和优先级三、描述符的应用四、描述符 + 类装饰器  (给 Person类添加类属性)五、利用描述符自定义 @property六、prope...
    99+
    2024-04-02
  • python基础之set集合详解
    一、set 集合 集合(set)是一个无序的不重复元素序列。 可以使用大括号 {} 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { ...
    99+
    2024-04-02
  • Git基础学习之分支操作的示例详解
    目录1.新建一个分支并且使分支指向指定的提交对象2.思考3.项目分叉历史的形成4.分支的总结1.新建一个分支并且使分支指向指定的提交对象 使用命令:git branch branch...
    99+
    2022-11-13
    Git分支基本操作 Git分支操作 Git基础学习
  • 详解MongoDB数据库基础操作及实例
    详解数据库基础操作及实例           废话不多说,直接上代码,注释写的比较清楚,大家参考下,  示...
    99+
    2024-04-02
  • Python+OpenCV实现图像基本操作的示例详解
    目录1. 计算机眼中的图像2. 图像的表示3. 基础操作 图像的读取4. 截取部分图像数据(ROI)5. 视频的读取6. 边界填充7. 图像的加法 图像的加法1. 计算机眼中的图像 ...
    99+
    2023-05-16
    Python OpenCV图像基本操作 Python OpenCV图像操作 Python OpenCV图像 Python OpenCV
  • Golang基础教程之字符串string实例详解
    目录1、 string的定义2、string不可变3、使用string给另一个string赋值4、string重新赋值补充:字符串拼接总结1、 string的定义 Golang中的s...
    99+
    2024-04-02
  • python之LIST基础操作
    1,创建列表>>> list1=['a','b','c','d'] >>> list2=[1,2,3,4] >>> list3=['a','b','c',1,2,3]2,访问列表中的值&...
    99+
    2023-01-31
    操作 基础 python
  • Python基础语法之容器详解
    目录Python基础语法-容器1.列表(list)1.1 列表基本概念1.2 获取元素1.3 增、删、改1.3.1 增 - —增加元素1.3.2 删 — 删除元素1.3.3 改—改变...
    99+
    2024-04-02
  • Python基础详解之邮件处理
    目录一、发送电子邮件二、发送纯文本格式的邮件三、发送HTML格式的邮件四、发送带附件的邮件五、发送图片的邮件六、接收电子邮件七、使用POP3协议下载邮件一、发送电子邮件 Python...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作