在python中绘制同一图上的数组列表?

时间:2017-02-17 22:44:29

标签: python arrays numpy matplotlib

我有一个数组列表或一个看起来像

的数组
a=[array1([.....]),array2([.....]),array3([....]),.....]

和单独的数组b(不是列表)

b=np.array[()]

列表“a”中的所有数组与“b”的长度和长度相同。我想在y轴上列出“a”中的所有数组,在x轴上绘制“b”,所有这些都在同一个图上。所以一个图由a [0] vs b,a [1] vs b,a [2] vs b,...等组成。

我该怎么做?

我试过

f, axes = plt.subplots(len(a),1)
for g in range(len(a)):
    axes[g].plot(b,a[g])
    plt.show()

但这给了我很多相互叠加的情节,他们甚至没有所有的数据。我希望一切都在一块情节上。

2 个答案:

答案 0 :(得分:0)

我刚刚发现了一些应该实现此目的的旧代码。尝试:

foo2()

修改:要按照this post中的回答每次生成相同的颜色集,请尝试:

foo()

import random import matplotlib.pyplot as plt from matplotlib import cm import numpy as np # define a and b here # Helps pick a random color for each plot, used for readability rand = lambda: random.randint(0, 255) fig = plt.figure(figsize=(10,7.5)) ax = fig.add_subplot(111) for ydata in a: clr = '#%02X%02X%02X' % (rand(),rand(),rand()) plot, = ax.plot(b, ydata, color=clr) 为您提供“在指定时间间隔内均匀分布的数字”,[0,1]用于此目的。

答案 1 :(得分:0)

您只需要定义一个子图并在同一轴上绘制所有数组。

fig, ax = plt.subplots(1, 1)
for g in range(len(a)):
   ax.plot(b, a[g])
plt.show()