如何用pylab在特定y值上绘制一维数据

40 投票
3 回答
115353 浏览
提问于 2025-04-17 01:49

我想把一个一维数组里的数据点画在水平轴上[编辑:在一个固定的y值上],就像这个图:

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

我该怎么用pylab来实现这个呢?

3 个回答

0

点击这个链接可以查看图表。

X = np.arange(10)

plt.scatter( X, [0] * X.shape[0])
25

这段代码会绘制名为“ar”的数组:

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

如果你在使用ipython,可以用“-pylab”这个选项来启动它,这样它会在启动时自动导入numpy和matplotlib库,所以你只需要写:

ar = [1, 2, 3, 8, 4, 5]
plot(ar)

如果想要做一个散点图,并把y坐标设置为1,可以使用:

plot(ar, len(ar) * [1], "x")
41

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()

作为一个好用的函数,它通过kwargs提供了所有常见的matplotlib细节,这样写会更方便:

def plot_at_y(arr, val, **kwargs):
    pp.plot(arr, np.zeros_like(arr) + val, 'x', **kwargs)
    pp.show()

撰写回答