Pylab 在数据中有 nan 的地方插入换行符。我怎样才能得到连续的线条。我认为 matlab 会自动执行此操作。
例子:
x = linspace(0,1,10)
y = rand(10,2)
y[5:8,1] = nan
plot(x,y,'.-')
我想要y[:,1]
插值,但不是y[:,0]
因为没有缺失点。
Pylab 在数据中有 nan 的地方插入换行符。我怎样才能得到连续的线条。我认为 matlab 会自动执行此操作。
例子:
x = linspace(0,1,10)
y = rand(10,2)
y[5:8,1] = nan
plot(x,y,'.-')
我想要y[:,1]
插值,但不是y[:,0]
因为没有缺失点。
选择没有的行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()