如何用pylab绘制给定y值的1-d数据

Nih*_*ngi 31 python matplotlib

我想在水平轴上绘制一维阵列中的数据点[编辑:在给定的y值],如下图所示:

http://static.inky.ws/image/644/image.jpg

我怎么能用pylab做到这一点?

K.-*_*Aye 28

Staven已经编辑了他的帖子,包括如何在y值1上绘制值,但他使用的是Python列表.

应该更快的变体(虽然我没有测量它)只使用numpy数组:

import numpy as np
import matplotlib.pyplot as pp
val = 0. # this is the value where you want the data to appear on the y-axis.
ar = np.arange(10) # just as an example array
pp.plot(ar, np.zeros_like(ar) + val, 'x')
pp.show()
Run Code Online (Sandbox Code Playgroud)

作为一个很好用的函数,通过kwargs提供所有常见的matplotlib优化,这将是:

def plot_at_y(arr, val, **kwargs):
    pp.plot(arr, np.zeros_like(arr) + val, 'x', **kwargs)
    pp.show()
Run Code Online (Sandbox Code Playgroud)

  • zeros_like就像np.zeros()为你提供了一个填充零的数组,但是使用_like()它将呈现所提供数组的形状.还有一个ones_like(),非常方便 (3认同)

Sta*_*ven 18

这将绘制数组"ar":

import matplotlib.pyplot as pp
ar = [1, 2, 3, 8, 4, 5]
pp.plot(ar)
pp.show()
Run Code Online (Sandbox Code Playgroud)

如果您正在使用ipython,可以使用"-pylab"选项启动它,它将在启动时自动导入numpy和matplotlib,因此您只需要编写:

ar = [1, 2, 3, 8, 4, 5]
plot(ar)
Run Code Online (Sandbox Code Playgroud)

要将y坐标设置为1来执行散点图:

plot(ar, len(ar) * [1], "x")
Run Code Online (Sandbox Code Playgroud)