1

Pylab 在数据中有 nan 的地方插入换行符。我怎样才能得到连续的线条。我认为 matlab 会自动执行此操作。

例子:

x = linspace(0,1,10)
y = rand(10,2)
y[5:8,1] = nan
plot(x,y,'.-')

我想要y[:,1]插值,但不是y[:,0]因为没有缺失点。

4

1 回答 1

2

选择没有的行nan

from pylab import isnan
boolind = ~isnan(y).any(1)

然后做

plot(x[boolind], y[boolind])

如果你想要一个线性插值的值来代替它nan,你只需记录它的位置nan并使用相邻点进行插值,但我认为出于绘图目的,简单地消除nan数据点就足够了——代码将为你进行线性插值反正。

顺便说一句:大概你y = rand((10, 50))应该是y = rand(10, 50),虽然我不确定你为什么要针对一维绘制二维数组。

编辑

y对于您的特定问题,您可以简单地分别绘制两列

from pylab import *
x = linspace(0,1,10)
y = rand(10,2)
y[5:8,1] = nan
boolind = ~isnan(y)
plot(x[boolind[:,0]],y[boolind[:,0], 0],'.-')
plot(x[boolind[:,1]],y[boolind[:,1], 1],'.-')
show()

在此处输入图像描述

于 2012-05-18T22:57:43.420 回答