gpt4 book ai didi

pandas - 在单个图形上绘制多个分组的列

转载 作者:行者123 更新时间:2023-12-04 10:53:25 27 4
gpt4 key购买 nike

enter image description here

对于上述 Pandas DataFrame pd我想根据以下条件绘图:

  • 单线图
  • 对于每个算法,x 轴 = num_ingress y 轴 = ['total_flows', 'successful flows', 'dropped_flows'] .所以对于每个算法,图上必须有 3 行
  • y 轴的标签必须是算法名称 + 列,例如A - Total Flows , B - Total Flows

  • 我试过 groupbymatplotlib但后来我得到了多个组,每组只能绘制一张图。不是一个图上的所有线。我也试过 seaborn但无法根据 groupby 使其工作还有。

    任何帮助将不胜感激。

    最佳答案

    创建你的数据框,确保使用 sort_values 按算法和 num_ingress 排序。

    import pandas as pd

    algorithm = ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B']
    num_ingress = [4, 2, 1, 3, 5, 4, 2, 1, 3, 5]
    total_flow = [8000, 4000, 2000, 6000, 10000, 8000, 4000, 2000, 6000, 10000]
    successful_flows = [5985, 3994, 1997, 5991, 1994, 5975, 3988, 1996, 5974, 5087]
    dropped_flows = [2000, 0, 0, 0, 7991, 2005, 0, 0, 9, 4889]

    df = pd.DataFrame({'algorithm': algorithm,
    'num_ingress': num_ingress,
    'total_flow': total_flow,
    'successful_flows': successful_flows,
    'dropped_flows': dropped_flows
    })

    df.sort_values(['algorithm', 'num_ingress'], inplace=True)
    df

    然后绘制
    import matplotlib.pyplot as plt
    import numpy as np

    for i, algorithm in enumerate(df.groupby('algorithm')):
    algorithm_df = pd.DataFrame(algorithm[1])
    plt.subplot(1, 2, i+1)
    plt.plot(algorithm_df['num_ingress'], algorithm_df[['total_flow', 'successful_flows', 'dropped_flows']])
    plt.title("Algorithm {}".format(algorithm_df['algorithm'].values[0]))

    plt.tight_layout()
    plt.show()

    enter image description here

    关于pandas - 在单个图形上绘制多个分组的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59354651/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com