如何在matplotlib中的行上绘制一系列点?

Zet*_*Two 3 python matplotlib

我正在使用matplotlib和Python 2.7

我有一个MxN矩阵的元组,一个x坐标和一个速度.如何绘制M行的点,在指定的x坐标系的每一行中有N个点?首先是顶部的第一排?

我已经尝试了文档中的各种示例,但说实话,我还没有真正找到任何东西.

这是我想要完成的一个粗略的例子,t坐标从0到M,x范围有固定的大小.根据它们的值将点放置在水平线中.它有点可读吗? 情节模型

Joe*_*ton 5

听起来你有这样的事情:

import numpy as np
import matplotlib.pyplot as plt

x = np.random.random((10, 20))
x = x.cumsum(axis=1)

fig, ax = plt.subplots()
for i, row in enumerate(x):
    ax.plot(row, i * np.ones_like(row), 'ko')

ax.set_ylim([-0.5, 9.5])
ax.set_yticks(range(10))
ax.invert_yaxis()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑:

@EMS是对的,我错过了一个相当关键的问题.

但是,如果您有嵌套的元组列表,只需将其转换为数组即可.它将是一个3D数组,您可以根据需要切割x位置和速度.绝对不需要生成第二个数据集,matplotlib会将您输入的任何内容转换为numpy数组,因此没有性能损失.

例如

import numpy as np

data = [[(1, 2), (3, 4)],
        [(5, 6), (7, 8)]]

data = np.array(data)

x = data[:,:,0]
velocity = data[:,:,1]
Run Code Online (Sandbox Code Playgroud)

这会产生:

x: 
array([[1, 3],
       [5, 7]])

velocity:
array([[2, 4],
       [6, 8]])
Run Code Online (Sandbox Code Playgroud)