使用matplotlib按行绘制数组

时间:2016-08-14 15:54:20

标签: python 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的方式进行?

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:0)

这将有效:

plt.figure()
for i in range(len(a)):
    plt.plot(a[i], b[i])
plt.show()

但Suever所展示的方式却是Pythonic。但是,并非每个函数都具有内置的功能。

答案 2 :(得分: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的回答中找到不同方法及其效率的比较。