contourplot函数使用详解

一、contourplot怎么调参数范围

import numpy as np
import matplotlib.pyplot as plt

#生成数据
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#调整参数范围
plt.contourf(X, Y, Z, levels=np.linspace(-1,1,20), cmap=plt.cm.hot)
C = plt.contour(X, Y, Z, 10, colors='black', linewidth=.5) 
plt.clabel(C, inline=True, fontsize=10)
plt.show()

contourplot函数用于绘制二元函数的等高线图。首先需要准备一组数据,可以使用numpy生成。使用plt.contourf()来绘制等高线图的填充颜色,其中levels参数用于设置颜色分区层数,cmap用于选择配色方案。plt.contour()用于绘制等高线轮廓,其中colors参数用于选择轮廓线颜色,linewidth参数用于设置轮廓线粗细。plt.clabel()用于绘制轮廓线标签,其中inline参数用于控制标签是否放置在线内部,fontsize用于控制标签的字体大小。

二、contourplot函数

import numpy as np
import matplotlib.pyplot as plt

#生成数据
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#绘制等高线图
plt.contour(X, Y, Z, 10, colors='black')
plt.show()

可以看到,contourplot函数绘制的是等高线轮廓,由于没有填充颜色,图像较为简洁。

三、contourplot比例

import numpy as np
import matplotlib.pyplot as plt

#生成数据
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#不等比例绘图
fig, ax = plt.subplots()
a = .8
fig.set_size_inches(a*6.4, a*4.8)
ax.contourf(X, Y, Z, levels=np.linspace(-1,1,20), cmap=plt.cm.hot)
C = ax.contour(X, Y, Z, 10, colors='black', linewidth=.5) 
ax.clabel(C, inline=True, fontsize=10)
plt.show()

可以使用fig.set_size_inches()函数自定义图片比例,其中参数a为缩放比例。为了保持等比例绘图,x轴的长度应该为y轴长度的1.33倍。

四、contourplot3d

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

#生成数据
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#绘制3D图像
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, cmap=plt.cm.hot)
plt.show()

以上是contourplot函数绘制三维图像的基本方法,通过设置参数projection=’3d’来告诉Python需要绘制3D图像,然后使用ax.plot_surface()函数来绘制3D图像。

五、contourplot3D函数

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

#生成数据
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#绘制3D等高线图
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.contour(X, Y, Z, 10, cmap=plt.cm.hot)
plt.show()

contourplot3D函数使用方法类似于contourplot函数,只不过是用于绘制3D等高线图而不是3D图像。其中,levels参数用于设置颜色分区层数,cmap用于选择配色方案。

六、contourplot和plot区别

import numpy as np
import matplotlib.pyplot as plt

#生成数据
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#绘制等高线图和曲面图
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122, projection='3d')

ax1.contour(X, Y, Z, 10, colors='black')
ax2.plot_surface(X, Y, Z, cmap=plt.cm.hot)

plt.show()

可以看到,contourplot和plot的区别在于contourplot绘制出的是等值线图,plot则直接绘制出了曲面。在上方示例中,使用contourplot和plot绘制出了等高线图和曲面图。

七、contourplot函数有地方画不出来

使用一些特殊函数,比如圆锥线(z^2=x^2+y^2)这种函数,contourplot函数就无法进行绘制,因为这些函数出现奇点。这种情况下,需要使用contourplot3D函数。

八、contourplot3D函数画奇点

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

#生成数据
x = np.linspace(-1, 1, 100)
y = np.linspace(-1, 1, 100)
X, Y = np.meshgrid(x, y)
Z = X ** 2 + Y ** 2

#绘制图像
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, cmap=plt.cm.hot)
plt.show()

在contourplot3D函数中无法绘制出奇点,需要使用plot_surface()函数进行曲面绘制,该函数应该是基于颜色填充的方法绘图,因此不会出现奇点。

九、contourplot函数局部不能画

在contourplot函数中一些函数局部变化较为复杂,造成函数在局部无法使用等高线的方法表示。这种时候,可以考虑将总体分为两个部分,一部分进行等高线表示,一部分进行平面表示。

import numpy as np
import matplotlib.pyplot as plt

#生成数据
x = np.linspace(-1, 1, 1000)
y = np.linspace(-1, 1, 1000)
X, Y = np.meshgrid(x, y)
Z = X ** 2 - Y ** 2

#绘制图像
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)

#等高线表示
ax1.contour(X, Y, Z, 5, colors='black')

#平面表示
x_subs = np.linspace(-1, 1, 100)
y_subs = np.linspace(-.01, .01, 100)
X_subs, Y_subs = np.meshgrid(x_subs, y_subs)
ax2.plot_surface(X_subs, Y_subs, X_subs ** 2 - Y_subs ** 2, cmap=plt.cm.hot)

plt.show()

如上图所示,将函数分别进行等高线和平面表示,可以获得更加精细的图像,细节表现会更好。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/154795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-11-16 14:13
下一篇 2024-11-16 14:14

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python中capitalize函数的使用

    在Python的字符串操作中,capitalize函数常常被用到,这个函数可以使字符串中的第一个单词首字母大写,其余字母小写。在本文中,我们将从以下几个方面对capitalize函…

    编程 2025-04-29
  • Python中set函数的作用

    Python中set函数是一个有用的数据类型,可以被用于许多编程场景中。在这篇文章中,我们将学习Python中set函数的多个方面,从而深入了解这个函数在Python中的用途。 一…

    编程 2025-04-29
  • 三角函数用英语怎么说

    三角函数,即三角比函数,是指在一个锐角三角形中某一角的对边、邻边之比。在数学中,三角函数包括正弦、余弦、正切等,它们在数学、物理、工程和计算机等领域都得到了广泛的应用。 一、正弦函…

    编程 2025-04-29
  • 单片机打印函数

    单片机打印是指通过串口或并口将一些数据打印到终端设备上。在单片机应用中,打印非常重要。正确的打印数据可以让我们知道单片机运行的状态,方便我们进行调试;错误的打印数据可以帮助我们快速…

    编程 2025-04-29
  • Python3定义函数参数类型

    Python是一门动态类型语言,不需要在定义变量时显示的指定变量类型,但是Python3中提供了函数参数类型的声明功能,在函数定义时明确定义参数类型。在函数的形参后面加上冒号(:)…

    编程 2025-04-29
  • Python实现计算阶乘的函数

    本文将介绍如何使用Python定义函数fact(n),计算n的阶乘。 一、什么是阶乘 阶乘指从1乘到指定数之间所有整数的乘积。如:5! = 5 * 4 * 3 * 2 * 1 = …

    编程 2025-04-29
  • Python定义函数判断奇偶数

    本文将从多个方面详细阐述Python定义函数判断奇偶数的方法,并提供完整的代码示例。 一、初步了解Python函数 在介绍Python如何定义函数判断奇偶数之前,我们先来了解一下P…

    编程 2025-04-29
  • Python函数名称相同参数不同:多态

    Python是一门面向对象的编程语言,它强烈支持多态性 一、什么是多态多态是面向对象三大特性中的一种,它指的是:相同的函数名称可以有不同的实现方式。也就是说,不同的对象调用同名方法…

    编程 2025-04-29
  • 分段函数Python

    本文将从以下几个方面详细阐述Python中的分段函数,包括函数基本定义、调用示例、图像绘制、函数优化和应用实例。 一、函数基本定义 分段函数又称为条件函数,指一条直线段或曲线段,由…

    编程 2025-04-29

发表回复

登录后才能评论