【问题标题】:Plotting for repeated values using loops Python使用循环 Python 绘制重复值
【发布时间】:2018-11-06 14:40:35
【问题描述】:

我有一些看起来像 data = pd.read_csv(....) 的数据:

Year    Month     HOUR  NAME            RATE
2010    1          0    Big              222  
2010    1          0    Welsch Power     434
2010    1          0    Cottonwood       124
2010    1          1    Big              455  
2010    1          1    Welsch Power     900
2010    1          1    Cottonwood       110
.
.
.
2010    2          0    Big              600  
2010    2          0    Welsch Power     1000
2010    2          0    Cottonwood       170
.
.
2010    3          0    Big              400  
2010    3          0    Welsch Power     900
2010    3          0    Cottonwood       110

如您所见,小时 (0 - 23) 每月重复一次 (0 - 12)。我需要一种循环值的方法,以便我可以每月按小时绘制 RATE (Y-Axis) (X-Axis)对于每个 NAME。

我的尝试看起来像:

for name, data in data.groupby('NAME'):
    fig = plt.figure(figsize=(14,23))
    plt.subplot(211)
    plt.plot(data['HOUR'], data['RATE'], label=name)
    plt.xlabel('Hour')
    plt.ylabel('Rate')
    plt.legend()
    plt.show()
    plt.close()

这可行,但因为 HOUR 会重复每月的每个变化,所以图表每次循环时都会返回 0。我希望将 12 个月中的每一个作为不同颜色的单独线,用于一个图表上的每个名称,但目前它们看起来像这样:

【问题讨论】:

    标签: python python-3.x pandas dataframe matplotlib


    【解决方案1】:

    .pivotDataFrame 在 groupby 之后,因此它将每个月绘制为不同的行:

    import matplotlib.pyplot as plt
    
    for name, gp in df.groupby(['NAME']):
        fig, ax = plt.subplots()
        gp.pivot(index='HOUR', columns='Month', values='RATE').plot(ax=ax, marker='o', title=name)
        plt.show()
    

    【讨论】:

    • 这行得通,但我实际上想要每个 NAME 的单独图表(实际上有 20 个 NAME,每个 12 个月)。
    • 这很棒。谢谢。
    • 有什么方法可以改变标题的字体大小并在名称之外添加一些额外的文本?
    • 是的,ax 是一个 matplotlib.axes._subplots.AxesSubplot 对象,它有很多与之相关的方法。您可以从图中删除title=name,而是在循环中执行ax.set_title(name+'_more_text', fontsize=16, color='orange') 之类的操作。您可以使用 matplotlib 进行无休止的自定义,因此最好探索他们的一些示例
    猜你喜欢
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多