2013-04-14 65 views
2

我有一个二维数组,我需要绘制x和y列,但只能在x的一定范围内。 我知道如何使用索引进行绘图,但我需要指定x的。我有几个这样的数组,所以我试图找到一种方法来做到这一点,而不必单独查看每个数组。使用条件来绘制matplotlib

下面是一个例子:

array([[ 4.40148390e+03, 1.13200000e+00], 
     [ 4.40248390e+03, 1.12200000e+00], 
     [ 4.40348440e+03, 1.11600000e+00], 
     [ 4.40448440e+03, 1.10600000e+00], 
     [ 4.40548490e+03, 1.09200000e+00], 
     [ 4.40648490e+03, 1.07700000e+00], 
     [ 4.40748540e+03, 1.08700000e+00], 
     [ 4.40848540e+03, 1.09400000e+00], 
     [ 4.40948580e+03, 1.10200000e+00], 
     [ 4.41048580e+03, 1.09500000e+00], 
     [ 4.41148630e+03, 1.12000000e+00]]) 

所以我们可以说我只需要4402 < x < 4410,但我不知道该指数。我可以把这样的东西:plot(x, y, where(4402 < x < 4410))

我觉得有一些很明显,我很想念这里:P

+1

'一[(A [:,0]> 4402)&(一个[:,0] <4410)]' – mtadd

+0

@mtadd灿你可以把它作为答案(也可以添加一些解释它的文字) – tacaswell

回答

5

你可以使用matplotlib设置你的x轴的限制,以免对您的数据系列显示所有的点。然而,我们可以过滤numpy的阵列上方如下:

a = array([[ .... ]]) 
x = a[:,0] 
y = a[:,1] 

filter = (x>4402)&(x<4410) 

plot(x[filter],y[filter]) 
+0

如果这个答案被接受,这个问题应该被标记为** numpy **。 – mtadd

+0

添加了numpy标签 – tacaswell