将缺失点的点连接到零

时间:2014-02-21 20:49:29

标签: python numpy matplotlib plot

我有一个这样的数据集,其中我有xs的一组值,我用ys的值绘制相应的折线图。

xs = np.array([1,2,5,6,9,10,11)
ys = pow(xs,2)
ys
plt.plot(xs, ys, linestyle='-', marker='o')


plt.show()

如果您在默认情况下注意到,则绘图连接点并绘制线条。但是,我想在0处绘制缺失点的线。我该怎么做呢 ?我应该操纵数据以零填充缺失值(numpy,也许)或者有没有办法绘制这个matplotlib.plot

确切地说,我需要绘制:xs = np.array([1,2,0,0,5,6,0,0,9,10,11,0,0,0,0])     ys = pow(xs,2) 但是,截至目前,这是我的xs=np.array([1,2,5,6,9,10,11)。如何填写1:15范围内缺失的元素。我看了masked_array,这是不同的。 numpy中还有其他填充选项吗?

2 个答案:

答案 0 :(得分:1)

由于您想要绘制不在数据集中的点,因此很难直接在matplotlib中进行绘制。但是,使用put

构建点很容易
xs = array([1,2,5,6,9,10,11])
ys = xs**2

x = arange(12)
y = zeros(12, dtype=int32)
put(y, xs, ys)

plt.plot(x, y, 'o', clip_on=False)

enter image description here

答案 1 :(得分:0)

如果您不处理整数X轴,则可以执行以下操作:

xs = array([1.0,2,5,6,9,10,11])
ys = xs**2

x = arange(0, 12, 0.5)
y = zeros(x.shape)
mask = r_[diff(searchsorted(xs, x)), 0]
y[mask == 1] = ys

plt.plot(x, y, 'o', clip_on=False)