2014-02-21 35 views
1

我有一个这样的数据集,其中我有一组值为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

究竟是什么你想要绘制什么?我建议只添加零点,因为它可以在这里工作,但取决于你想要的情节,不同的事情可能会更好。 – wbest

+0

我试图绘制'xs'的出现频率 - 这是'ys',所以当有一个缺失点时,它应该显示为零次出现。 – Learner

+1

你想做一个[直方图](http://stackoverflow.com/questions/5328556/histogram-matplotlib)吗? – wbest

回答

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

+0

太棒了!这正是我正在寻找的功能。谢谢 :) – Learner