plot.py 934 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #! /usr/bin/env python3
  2. # Read a CSV file and plot it
  3. #
  4. # https://stackoverflow.com/questions/40071096/how-to-plot-multiple-lines-in-one-figure-in-pandas-python-based-on-data-from-mul
  5. import pandas as pd
  6. import matplotlib.pyplot as plt
  7. from io import StringIO
  8. # CSV String with out headers
  9. csvString = """name,date,income
  10. Barny,1998-01-01,100
  11. Barny,1999-01-01,120
  12. Barny,2000-01-01,130
  13. Fred,1998-01-01,200
  14. Fred,1999-01-01,99
  15. Fred,2000-01-01,110
  16. Wilma,1996-01-01,20
  17. Wilma,1997-01-01,50
  18. Wilma,1998-01-01,55
  19. Wilma,1999-01-01,40
  20. """
  21. # Convert String into StringIO
  22. csvStringIO = StringIO(csvString)
  23. # Load CSV String into DataFrame
  24. df = pd.read_csv(csvStringIO, sep=",")
  25. df.sort_values("date",inplace=True)
  26. print(df)
  27. fig,ax = plt.subplots()
  28. for name in list(list(set(df['name']))):
  29. ax.plot(df[df.name==name].date,df[df.name==name].income,label=name)
  30. ax.set_xlabel("date")
  31. ax.set_ylabel("income")
  32. ax.legend(loc='best')
  33. plt.show()