python绘制等高线函数参数说明


plt.contour 是 Matplotlib 库中的一个函数,用于绘制等高线图。等高线图是一种特殊的地图,其中等高线表示相同高度的等值线。

函数说明

matplotlib.pyplot.contour(X, Y, Z, levels=None, colors=None, linestyles=None, linewidths=None, alpha=None, cmap=None, norm=None, extend=None, antialiased=None, origin=None, extent=None, *, data=None)

参数说明

  • X, Y: 输入的两个一维数组,表示网格的坐标。
  • Z: 一个二维数组,表示网格上每个点的值。
  • levels: 一个数组或整数,指定等高线的值。如果是一个数组,则会绘制这些值对应的等高线;如果是一个整数,则会自动生成指定数量的等高线。
  • colors: 一个字符串或一个颜色列表,指定等高线的颜色。
  • linestyles: 一个字符串或一个线条样式列表,指定等高线的线条样式。
  • linewidths: 一个数值或一个数值列表,指定等高线的线条宽度。
  • alpha: 一个介于0和1之间的数值,指定等高线的透明度。
  • cmap: 一个 Colormap 实例,指定等高线的颜色映射。
  • norm: 一个 Normalize 实例,指定等高线的颜色映射的归一化。
  • extend: 一个字符串,指定等高线在颜色映射之外的行为。
  • antialiased: 一个布尔值,指定是否对线条进行抗锯齿处理。
  • origin: 一个字符串,指定图像的原点位置。
  • extent: 一个长度为4的序列,指定图像的范围:[xmin, xmax, ymin, ymax]。
  • data: 一个可选的字典,包含用于绘制的额外数据。

返回值

返回一个 QuadContourSet 对象,表示等高线图。

示例

import matplotlib.pyplot as plt
import numpy as np

# 创建一个二维网格
x = np.linspace(-3.0, 3.0, 100)
y = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)

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

# 添加标题和坐标轴标签
plt.title('Contour Plot')
plt.xlabel('X')
plt.ylabel('Y')

# 显示图形
plt.show()

在这里插入图片描述

首先创建了一个二维网格,然后计算了每个网格点处的函数值。接着使用 plt.contour 函数绘制了这些函数值的等高线,指定等高线的颜色为黑色,并添加了标题和坐标轴标签

plt.contour 函数默认会自动选择等高线的值,如果想要指定等高线的值,可以通过 levels 参数来实现。例如,如果要绘制特定的等高线值:

plt.contour(X, Y, Z, levels=[0], colors='black')

这将只绘制函数值为0的等高线。

生成双峰山体数据


# 定义生成山体形状的函数
def height(x,y):
    return  -(np.log2(np.exp(-(x-2)**2-(y-2)**2) + 1.2*np.exp(-x**2-y**2)))**1

# 生成数据点
x = np.arange(-5.5,8.5,0.2)
y = np.arange(-5.5,8.5,0.2)
X,Y = np.meshgrid(x,y)
Z = height(X,Y)

代码案例

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

# 定义生成山体形状的函数
def saddle_shape(x, y):
    return -np.log((np.exp(-(x-2)**2-(y-2)**2) + 1.2*np.exp(-x**2-y**2)))

# 生成数据点
x = np.arange(-1.5,3.5,0.1)
y = np.arange(-1.5,3.5,0.1)
X,Y = np.meshgrid(x,y)
Z = saddle_shape(X,Y)

# 设置字体为新罗马
plt.rcParams['font.family'] = 'Times New Roman'

# ax, fig = plt.subplots()

# 绘制填充等高线图
plt.contourf(Y, X, Z, levels=np.linspace(Z.min(), Z.max(), 20))


# 设置坐标轴标签
# plt.colorbar(label='U')  # 添加颜色条
plt.ylabel('w(mm)')
plt.xlabel('$x_b$')

# 创建一个颜色条对象
cbar = plt.colorbar()

# 设置颜色条的标签
cbar.set_label('U (mJ)')

# 设置颜色条刻度对应的数值
cbar.set_ticks([1.22, 6.85, 12.48])
cbar.set_ticklabels(['0', '2', '4'])

plt.yticks([-1, 0, 1, 2, 3], [3, '', '', '', -3])
plt.xticks([-1, 0, 1, 2, 3], [-10, '', '', '', 10])


# 显示图形
plt.show()

在这里插入图片描述

生成三维的空间双峰山形函数

ax.contourf3D(X, Y, Z)

在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司南锤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值