1

i have a txt file . Here are some example rows:

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

I want to plot line chart like this:

like this

how can i do this?

i try this example, but i didnt do it

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

how can i devolop this code?

0

2 Answers 2

4

You can use pandas for parsing. Perhaps you can look into groupby functions of pandas to make the code better, but this is a working example (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()

enter image description here

Sign up to request clarification or add additional context in comments.

2 Comments

i must be use python 2.7
this code also works in python 2.7. Just checked it... You must have matplotlib and pandas installed, which you can see from the import statements...
0

This is done using 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()

Reference: To show timestamps on x-axis plotting unix timestamps in matplotlib

Graphs Image

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.