liv2hak
liv2hak

Reputation: 14980

plotting a timeseries graph in python using matplotlib from a csv file

I have some csv data in the following format.

Ln    Dr    Tag Lab    0:01    0:02    0:03    0:04    0:05    0:06    0:07    0:08   0:09
L0   St     vT  4R       0       0       0       0       0      0        0       0      0
L2   Tx     st  4R       8       8       8       8       8      8        8       8      8
L2   Tx     ss  4R       1       1       9       6       1      0        0       6      7

I want to plot a timeseries graph using the columns (Ln , Dr, Tg,Lab) as the keys and the 0:0n field as values on a timeseries graph.

I have the following code.

#!/usr/bin/env python

import matplotlib.pyplot as plt
import datetime
import numpy as np
import csv
import sys


with open("test.csv", 'r', newline='') as fin:
    reader = csv.DictReader(fin)
    for row in reader:
          key = (row['Ln'], row['Dr'], row['Tg'],row['Lab'])
          #code to extract the values and plot a timeseries.

How do I extract all the values in columns 0:0n without induviduall specifying each one of them. I want all the timeseries to be plotted on a single timeseries?

Upvotes: 1

Views: 1754

Answers (2)

Lee
Lee

Reputation: 31040

I'd suggest using pandas:

import pandas as pd
a=pd.read_csv('yourfile.txt',delim_whitespace=True)
for x in a.iterrows():
    x[1][4:].plot(label=str(x[1][0])+str(x[1][1])+str(x[1][2])+str(x[1][3]))

plt.ylim(-1,10)
plt.legend()

enter image description here

Upvotes: 1

OMRY VOLK
OMRY VOLK

Reputation: 1481

I'm not really sure exactly what you want to do but np.loadtxt is the way to go here. make sure to set the delimiter correctly for your file

data = np.loadtxt(fname="test.csv",delimiter=',',skiprows=1)

now the n-th column of data is the n-th column of the file and same for rows.

you can access data by line: data[n] or by column: data[:,n]

Upvotes: 0

Related Questions