【问题标题】:Use a for loop to plot the same period multiple times使用 for 循环多次绘制同一时期
【发布时间】:2020-05-21 06:23:41
【问题描述】:

我有一个带有 DateTime 系列的 pandas 数据框:

我想用相同的 x 轴(0 到 23 小时)绘制多个子图,以比较不同日期的用户数量。 所以,最后,我有与天数相同的地块,而不是一个包含整个一月的地块。

我创建了 2 个新列“Day”和“Hour”,并尝试按如下方式遍历它们:

for d in high['Day'].unique():
    print('Day ' + str(d))
    plt.figure()
    plt.plot(high['Hour'], high['Usuarios'])
    plt.show()

虽然我每天都在创建一个情节,但它并没有按预期工作:

【问题讨论】:

    标签: pandas for-loop matplotlib plot


    【解决方案1】:

    缺少的主要内容是将绘制的时间限制为一天。一种方法是创建一个像这样的新数据框:day_high = high[high['Day'] == d]Pandas 支持许多其他方式,例如 groupby

    这里有一些示例代码来展示它是如何工作的。我添加了一行来将绘图保存到文件中。

    import matplotlib.pyplot as plt
    import pandas as pd
    import random
    
    data = [[d, h, random.randint(0, 15)] for h in range(0, 24) for d in range(1, 32)]
    high = pd.DataFrame(data, columns=['Day', 'Hour', 'Usuarios' ])
    for d in high['Day'].unique():
        print('Day ' + str(d))
        day_high = high[high['Day'] == d]
        plt.plot(day_high ['Hour'], day_high ['Usuarios'])
        plt.title(f'Día {d}')
        plt.savefig(f'Día {d}.png')
        plt.show()
    

    【讨论】:

    • 这个答案对你有帮助吗?
    猜你喜欢
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多