使用Matplotlib按行绘制数组的图表

10

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

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

我是否需要使用for循环以更符合Python风格的方式来完成它?

3个回答

14
您可以将多维数组传递给plot,每列将被创建为单独的绘图对象。我们转置两个输入,以便它会将每一行单独绘制。
a = np.random.rand(16, 850)
b = np.random.rand(16, 850)

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

谢谢 @Suever。它有效是因为我需要显示16个绘图。这就是我说“逐行”的原因 :) - Maxwell's Daemon

0
这个会起作用:
plt.figure()
for i in range(len(a)):
    plt.plot(a[i], b[i])
plt.show()

但是Suever展示的方式更加Pythonic。然而,并不是每个函数都内置了这样的功能。


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个点的一堆线。

更少时间内绘制多个图表 - Python的答案中,找到不同方法及其效率的比较。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接