import sys
import csv
from matplotlib import pyplot


csvfile = None

#===================================
# Treat arguments
#===================================
def pint(str, defval = None):
    try:
        return int(str)
    except:
        return defval

def pfloat(str, defval = None):
    try:
        return float(str)
    except:
        return defval

def getarg(idx, defval = None):
    try:
        return sys.argv[idx]
    except:
        return defval

def getfloatarg(idx, defval = None):
    try:
        return pfloat(sys.argv[idx])
    except:
        return defval

def getintarg(idx, defval = None):
    try:
        return pint(sys.argv[idx])
    except:
        return defval

def usage():
    argv = sys.argv
    print("")
    print("Usage: python {} csv_path".format(argv[0]))
    print("   ex: python {} {}".format(argv[0], csvfile))

def terminate(message = None, usage = usage):
    if message is not None:
        print("")
        print(message)

    if usage is not None:
        usage()

    print("")
    exit()

def updatevars():
    global csvfile

    argv = sys.argv
    if len(argv) == 1:
        terminate()

    csvfile = getarg(1, csvfile)


def main():
    updatevars()

    print("")
    print("Read [{}]".format(csvfile))

# open outfile to write a csv file
    f = open(csvfile, 'r')
    reader = csv.reader(f, delimiter=",", doublequote=True, 
        lineterminator="\r\n", quotechar='"', skipinitialspace=True)

# read csv values to list header[i] and 2D list val[i][j]
    val = []
    c = 0
    for row in reader:
        if c == 0:
            header = row
            nval  = len(header)
            for i in range(nval):
                val.append([])
            print(header)
            print("nval: ",  nval)
        else:
            for i in range(nval):
                val[i].append(pfloat(row[i]))
        c += 1

    ndata = c-1
    print("ndata: ", ndata)

# plot val[0] vs val[i] (i >= 1)
    pyplot.title(csvfile)
    pyplot.xlabel(header[0])
    pyplot.ylabel(header[1])
    for i in range(1, nval):
        pyplot.plot(val[0], val[i], label = header[i])
#    pyplot.scatter(x, y)

    pyplot.legend()

    pyplot.tight_layout()

    pyplot.show()

if (__name__ == '__main__'):
    main()
