2012-07-18 60 views
0

如果我有一个元组的列表,每次都反映位置,我需要的是将一个图形显示为速度(另一个列表)的多行。我该怎么做?Countour lines Matplotlib Python

例如:

import matplotlib.pyplot as plt 
import numpy as np 
position = [(12,14), (12.22,13.22), (15, 17)] 
velocity = [4.55,2.13,5] 
+0

什么是countour线? – 2012-07-18 23:26:12

+0

你的问题不清楚。你如何提出从这些有限的数据中生成等高线?典型地,等高线用于提供双输入函数的值的二维表示(例如,各点的高度)。你只有几个孤立的号码。 – BrenBarn 2012-07-18 23:40:32

+0

这只是这个想法。把我的位置作为一个向量列表,以及每个位置的速度。我需要一张图形,将每个位置矢量与其速度结合在一起。我认为这条线会做得很好。你不觉得吗?我不确定该怎么做 – Blas 2012-07-19 02:09:38

回答

2

使用的GridData()在转换散射点网格数据,这里有一个例子:

import numpy as np 
from scipy.interpolate import griddata 
import matplotlib.pyplot as plt 
np.random.seed(0) 

x = np.random.normal(size=200) 
y = np.random.normal(size=200) 
v = np.sqrt(x**2+y**2) 

xg, yg = np.mgrid[x.min():x.max():100j, y.min():y.max():100j] 
vg = griddata((x, y), v, (xg, yg), method='cubic') 
plt.contourf(xg, yg, vg) 
plt.scatter(x, y, c=v) 
plt.show() 

输出是:

enter image description here

+0

美丽!谢谢 – Blas 2012-07-19 14:35:17

1

如果你想绘制各点的速度,那么你应该尝试quiver。它会绘制方向字段(箭头)。由于速度是矢量,它有一个xy组件。

import pylab as plt 

x=[12, 13, 14, 15, 16] # x-axis coordinates 
y=[14, 15, 16, 17, 18] # y-axis coordinates 

v_x=[6, 6, 6, 6, 6] # x-component of velocity 
v_y=[1,4,3,2,1]  # y-component of velocity 

plt.quiver(x,y,v_x,v_y) 
plt.xlim(11,17) 
plt.ylim(13,19) 

plt.show() 

看一看here,如果你想了解更多关于quiver

相反,contour是一些变量具有恒定值的曲线。看看here如果你想了解更多。