使用 matplotlib 按行绘制数组

新手上路,请多包涵

我有两个 numpy 数组(a 和 b),每个数组的形状为 (16, 850)。我逐行显示它们,例如

plt.figure()
plt.plot(a[0], b[0])
plt.plot(a[1], b[1])
plt.plot(a[2], b[2])
...
plt.show()

我是否必须使用 for 循环以更 pythonic 的方式来完成它?

原文由 Maxwell‘s Daemon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 603
2 个回答

您可以将多维数组传递给 plot 并且每一列都将创建为单独的绘图对象。我们转置两个输入,以便它单独绘制每一行。

 a = np.random.rand(16, 850)
b = np.random.rand(16, 850)

plt.plot(a.T, b.T)
plt.show()

原文由 Suever 发布,翻译遵循 CC BY-SA 3.0 许可协议

绘制多条线的最有效方法是使用 LineCollection 。这可能看起来像

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

x = np.random.rand(N,3)
y = np.random.rand(N,3)

data = np.stack((x,y), axis=2)
fig, ax = plt.subplots()

ax.add_collection(LineCollection(data))

对于一串由 3 个点组成的线。

Many plots in less time - python 的答案中查找不同方法及其效率的比较。

原文由 ImportanceOfBeingErnest 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题