【问题标题】:How can i plot line chart in python?如何在 python 中绘制折线图?
【发布时间】:2015-12-08 15:28:55
【问题描述】:

我有一个txt file 。以下是一些示例行:

computer 2015-11-26 08:47:00 86
computer 2015-11-26 08:48:00 78
computer 2015-11-26 08:49:00 61
computer 2015-11-26 08:50:00 50
computer 2015-11-26 08:51:00 53
computer 2015-11-26 08:52:00 61
computer 2015-11-26 08:53:00 60
computer 2015-11-26 08:54:00 50
computer 2015-11-26 08:55:00 91
computer 2015-11-26 08:56:00 99
computer 2015-11-26 08:57:00 75
computer 2015-11-26 08:58:00 105
computer 2015-11-26 08:59:00 67
computer 2015-11-26 09:00:00 63

我想绘制这样的折线图:

我该怎么做?

我尝试this example,但我没有这样做

plt.bar()
        plt.xticks()
        plt.ylabel()
        plt.title()
        plt.savefig() 
        plt.show()

如何开发此代码?

【问题讨论】:

    标签: python matplotlib plot linechart


    【解决方案1】:

    您可以使用 pandas 进行解析。也许您可以查看 pandas 的 groupby 函数以使代码更好,但这是一个工作示例(python 3.x)

    import matplotlib.pyplot as plt
    import pandas as pd
    
    df = pd.read_csv('t.txt', delim_whitespace=True, header=None, parse_dates={'Dates': [1, 2]})
    
    plt.figure()
    l_h = []
    for identifier in df[0].unique():
        h, = plt.plot(df[df[0]==identifier]['Dates'], df[df[0]==identifier][3], label=identifier)
        l_h.append(h)
    plt.legend(handles=l_h)
    plt.show()
    

    【讨论】:

    • 我必须使用 python 2.7
    • 此代码也适用于 python 2.7。刚查了一下……你一定已经安装了matplotlib和pandas,从import语句中可以看到……
    【解决方案2】:

    这是使用 matplotlib 完成的:

    import matplotlib.dates as md
    import datetime as dt
    import matplotlib.pyplot as plt
    import numpy as np
    import re
    
    computerData =[]
    studentData = []
    universityData = []
    scienceData = []
    timestamp1 = []
    timestamp2 = []
    timestamp3 = []
    p = re.compile("^.*[a-z]. ([0-9].*) ([0-9]*)$")
    f = open(r"t.txt")
    for line in f:
        if line.startswith("computer"):
            t1 = p.search(line)
            dates1 = dt.datetime.strptime(t1.group(1), "%Y-%m-%d %H:%M:%S")
            time1 = md.date2num(dates1)
            timestamp1.append(time1)
            computerData.append(int(t1.group(2)))
    
        if line.startswith("student"):
            t2 = p.search(line)
            dates2 = dt.datetime.strptime(t2.group(1), "%Y-%m-%d %H:%M:%S")
            time2 = md.date2num(dates2)
            timestamp2.append(time2)
            studentData.append(int(t2.group(2)))
    
        if line.startswith("science"):
            t3 = p.search(line)
            dates3 = dt.datetime.strptime(t3.group(1), "%Y-%m-%d %H:%M:%S")
            time3 = md.date2num(dates3)
            timestamp3.append(time3)
            scienceData.append(int(t3.group(2)))
    
    ax=plt.gca()
    xfmt = md.DateFormatter('%H:%M')
    ax.xaxis.set_major_formatter(xfmt)
    
    plt.plot(timestamp1,computerData,'r', label="Computer", linewidth=2)
    plt.plot(timestamp2,studentData,'g', label="Student", linewidth=2)
    plt.plot(timestamp3,scienceData,'y', label="Science", linewidth=2)
    
    plt.legend()
    plt.grid(True,color='k')
    plt.show()
    

    参考: 在 x 轴上显示时间戳 plotting unix timestamps in matplotlib

    Graphs Image

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      相关资源
      最近更新 更多