【问题标题】:Plotting a list of arrays on the same plot in python?在python中的同一图上绘制数组列表?
【发布时间】:2017-02-17 22:44:29
【问题描述】:

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

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()

但这给了我很多相互堆叠的图,它们甚至没有所有数据。我想要一个情节上的一切。

【问题讨论】:

    标签: python arrays numpy matplotlib


    【解决方案1】:

    我刚刚找到了一些可以完成此任务的旧代码。试试:

    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] 用于此目的。

    【讨论】:

    • 谢谢,效果很好。有没有办法让它的颜色总是一样的?所以所有的图都有不同的颜色,但每次我绘制时,它们都保持相同的颜色。
    • 是的,这绝对是可能的。我还没有尝试过,但看到了修改。
    • 谢谢!!你太棒了!
    • 如果您的问题得到解决,请mark an answer as accepted :)
    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 2021-08-20
    • 1970-01-01
    • 2015-06-25
    • 2018-10-26
    • 1970-01-01
    • 2021-11-21
    • 2017-07-26
    相关资源
    最近更新 更多