7

我正在使用 Matplotlib 生成地下水高程等值线。见下文

这就是我现在所拥有的;如何添加如下图所示的水流箭头? 在此处输入图像描述

我想添加箭头使其看起来像这样: 带箭头的地下水等高线

如果有人有一些想法和/或代码示例,将不胜感激。

4

1 回答 1

12

您需要最新(>= 1.2)版本的 matplotlib,但streamplot这样做。您只需要获取头部的负梯度(即地表含水层的“地下水位”)网格。

作为一个从头部随机点观察生成的快速示例:

import numpy as np
from scipy.interpolate import Rbf
import matplotlib.pyplot as plt
# Make data repeatable
np.random.seed(1981)

# Generate some random wells with random head (water table) observations
x, y, z = np.random.random((3, 10))

# Interpolate these onto a regular grid
xi, yi = np.mgrid[0:1:100j, 0:1:100j]
func = Rbf(x, y, z, function='linear')
zi = func(xi, yi)

# -- Plot --------------------------
fig, ax = plt.subplots()

# Plot flowlines
dy, dx = np.gradient(-zi.T) # Flow goes down gradient (thus -zi)
ax.streamplot(xi[:,0], yi[0,:], dx, dy, color='0.8', density=2)

# Contour gridded head observations
contours = ax.contour(xi, yi, zi, linewidths=2)
ax.clabel(contours)

# Plot well locations
ax.plot(x, y, 'ko')

plt.show()

在此处输入图像描述

于 2013-05-13T21:28:04.327 回答