我有一个数组列表或一个数组数组,看起来像
a=[array1([.....]),array2([.....]),array3([....]),.....]
和一个单独的数组 b (不是列表)
b=np.array[()]
列表“a”中的所有数组的长度与“b”的长度相同。我想在 y 轴上的列表“a”和 x 轴上的“b”中绘制所有数组都在同一个图上。因此,一张图由 a[0] 与 b、a[1] 与 b、a[2] 与 b 等组成。
我该怎么做?
我试过了
f, axes = plt.subplots(len(a),1)
for g in range(len(a)):
axes[g].plot(b,a[g])
plt.show()
但这给了我很多相互堆叠的图,而且它们甚至没有所有数据。我希望一切都集中在一个地 block 上。
最佳答案
我刚刚找到了一些应该完成此任务的旧代码。尝试:
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)
编辑:每次生成相同的颜色集,如 this post 中的回答。 ,尝试:
colors = cm.rainbow(np.linspace(0, 1, len(a)))
for ydata, clr in zip(a, colors):
plot, = ax.plot(b, ydata, color=clr)
np.linspace
为您提供“在指定间隔内均匀分布的数字”,[0,1] 用于此目的。
关于python - 在Python中的同一个图上绘制数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42308660/