在NaN&s之后,matplotlib没有继续排队

时间:2013-08-25 16:02:53

标签: python numpy matplotlib

我有一个数组切片:

array([1.0, 2.0, 3.0, None, 4.0, None, 5.0, None, 6.0, None], dtype=object)

在绘制时看起来像THIS

如何在None值之后继续点线/连接线?我尝试使用astype将数据类型从对象更改为浮点数,并将None替换为nan的但是没有区别,我也尝试使用np.where(np.isnan())等的掩码数组但是它没有制作差异。我的绘图命令非常简单:

plt.plot(x, array, 'ro--')

其中x是一个numpy数组。

1 个答案:

答案 0 :(得分:7)

这是正确的行为,mpl尝试连接相邻的点。如果您的任何一方都有nan的积分,则无法将它们连接到任何地方。

如果您想在绘图时忽略nan,请将其删除

ind = ~np.isnan(np.asarray(data.astype(float)))
plt.plot(np.asarray(x)[ind], np.asarray(data)[ind], 'ro--')

所有asarray只是为了确保该示例有效,与astype

相同

另外,使用阴影(在python解析和语义方面)类(如数组)或常用函数的变量名称是非常不好的做法。