Python中plt.contour()函数能做什么,用法是怎样
Admin 2022-08-04 群英技术资讯 919 次浏览
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(X, Y, Z, [levels], **kwargs)
由于一开始这里很混淆,因此在这里对坐标代表的内容进行一个解释。要解释这个问题,首先可以引入实际问题,比如一座山,一般来说从飞机上或者很高的地方观察这座山的话能看到这座山就像圆一样,如果抽象成平面的话就成为一个圆了(这里是指比较规整的山啊)。然后实际上等高线就是从这样很高的地方去想象的,通过一系列工具把相同高度的位置在一个平面上标注出来,相同高度的位置通过线连起来就形成了等高线。
如果把刚刚说的圆放在坐标系中,那么某个坐标(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')
效果:
其二维图为:
叮!
不学不知道,学了才知道什么都不是想象的那么简单啊。
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() # 显示图片
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要给大家介绍了关于利用python如何删除同一文件夹下相似的图片的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
python3 连接sqlite实例,直接上代码吧importsqlite3db=r"D: pyWork test db" pyWork目录下test db数据库文件drp_tb_sql="droptableifexis
在处理数据的时候,很多时候会遇到批量替换的情况,如果一个一个去修改效率过低,也容易出错,replace()是很好的方法,下面这篇文章主要给大家介绍了关于Python pandas.replace用法的相关资料,需要的朋友可以参考下
本文通过两个版本给大家介绍pygame实现类似office的页面切换功能,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
今天就带大家详细总结一下Python闭包和装饰器的相关知识,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008