2013-05-13 29 views
6

私はMatplotlibで地下水面の輪郭を生成しています。下記を参照Matplotlib Contour Plotに水流矢印を追加する

これは私が今持っているものです。下の画像のように水の流れの矢印を追加するにはどうすればよいですか? enter image description here

私はそれがこのように見えるように矢印を追加する:誰でもいただければ幸いいくつかのアイデアおよび/またはコードサンプルを持っている場合 Groundwater Contour with Arrows

答えて

13

最近の(> = 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() 

enter image description here

+0

素晴らしいレスポンス:頭のランダム点観測から生成された簡単な例として

。再び。 – pelson

+0

ありがとう!それは有り難いです! –

+0

Joe、ありがとう、私はストリームプロットを1つの警告で動作させることができました。矢印のいくつかが間違った方向を指しているようです。あなたは一見見ることができると思いますか? http://stackoverflow.com/questions/16897585/matplotlib-streamplot-arrows-pointing-the-wrongwayway –

関連する問題