python contour函数
时间: 2023-11-07 11:57:46 浏览: 48
plt.contour是Python中用于绘制等高线的函数。使用示例如下:
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)
Z = X**2 + Y**2
C = plt.contour(x, y, Z, [2, 5, 8, 10])
plt.clabel(C, inline=True, fontsize=10)
这段代码中,我们首先使用numpy生成了一组连续的数据x和y。然后使用np.meshgrid函数将x和y转化为能在坐标系中形成点阵的数组X和Y。接着,我们定义了一个高度函数Z,其中Z的值是X和Y的平方和。最后,我们使用plt.contour函数画出等高线,并使用plt.clabel函数给等高线添加标签。
如果需要使用三维图来展示等高线的高度,可以使用以下代码:
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection='3d')
ax.scatter3D(X, Y, Z, cmap='Blues')
相关问题
python contour
Contour(轮廓)是指图像中具有相同颜色或强度的连续点的曲线。在Python中,可以使用OpenCV库的findContours函数来查找图像中的轮廓。
以下是一个使用OpenCV进行轮廓查找的示例代码:
```python
import cv2
# 读取图像
image = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二值化图像
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(image, contours, -1, (0, 255, 0), 3)
# 显示结果
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
Python contour不等间距填色
以下是两种Python绘制不等间距填色图的例子:
1. 使用`contourf`函数绘制填色图,并设置不等间距的色条刻度:
```python
import matplotlib.pyplot as plt
# 定义经度、纬度和高度数据
lon = [1, 2, 3, 4, 5]
lat = [1, 2, 3, 4, 5]
z = [[-100, -90, -80, -70, -60],
[-50, -40, -30, -20, -10],
[-5, -4, -3, -2, -1],
[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]
# 定义不等间距的色条刻度
level = [-100, -90, -80, -70, -60, -50, -40, -30, -20, -10, -1, 0]
# 绘制填色图
a = plt.contourf(lon, lat, z, level, extend='both', cmap='viridis')
# 设置色条的刻度
cb = plt.colorbar(a, shrink=0.78)
cb.set_ticks(level)
cb.ax.set_title('(m)', fontsize=12)
# 显示图形
plt.show()
```
2. 使用`contourf`函数绘制填色图,并设置不等间距的色条刻度:
```python
import matplotlib.pyplot as plt
# 定义经度、纬度和高度数据
lon = [1, 2, 3, 4, 5]
lat = [1, 2, 3, 4, 5]
z = [[-100, -90, -80, -70, -60],
[-50, -40, -30, -20, -10],
[-5, -4, -3, -2, -1],
[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]
# 定义不等间距的色条刻度
level = range(-100, 1)
# 绘制填色图
a = plt.contourf(lon, lat, z, level, extend='both', cmap='viridis')
# 设置色条的刻度
cb = plt.colorbar(a, shrink=0.78)
cb.set_ticks(level)
cb.ax.set_title('(m)', fontsize=12)
# 显示图形
plt.show()
```