Bläddra i källkod

improve plotting mechanics

George C. Privon 11 år sedan
förälder
incheckning
253999220d
1 ändrade filer med 18 tillägg och 11 borttagningar
  1. 18 11
      email_stats.py

+ 18 - 11
email_stats.py

@@ -26,6 +26,7 @@ import matplotlib.pyplot as plt
 import matplotlib.dates as mdates
 import argparse
 import re
+import numpy as np
 import cubehelix
 
 
@@ -42,13 +43,14 @@ parser.add_argument('--sendercolors', '-s', default=False, action='store',
 args = parser.parse_args()
 
 plt.figure()
-plt.ylim([0, 24])
+plt.ylim([0, 27])
 plt.ylabel('Hour')
 plt.xlabel('Date')
 plt.minorticks_on()
 plt.title(args.title)
 a = mailbox.mbox(args.mbox)
 
+pldata = {}
 if args.sendercolors:
     slist = args.sendercolors.split(',')
     nsend = len(slist)
@@ -56,6 +58,9 @@ if args.sendercolors:
                             minSat=1, maxSat=2.5,
                             minLight=.3, maxLight=.8,
                             gamma=.9)
+    for item in slist:
+        pldata[item] = []
+pldata['unknown'] = []
 
 for msg in a:
     cid = None
@@ -73,20 +78,22 @@ for msg in a:
             for search in enumerate(slist):
                 if re.search(search[1], msg['From'], re.IGNORECASE):
                     cid, label = search
+                    pldata[label].append([z.date(), z.hour + z.minute/60.])
                     break
         if cid is None:
-            cid = nsend+1
-            label = 'unknown'
-        plt.plot_date(z.date(),
-                      z.hour + z.minute/60.,
-                      color=scolor(cid / (nsend + 1)),
-                      ls='.',
-                      # tz=z.tzname(),
-                      label=label,
-                      xdate=True)
+            pldata['unknown'].append([z.date(), z.hour + z.minute/60.])
+
+for plid in enumerate(pldata.keys()):
+    plt.plot_date(np.array(pldata[plid[1]])[:,0],
+                  np.array(pldata[plid[1]])[:,1],
+                  color=scolor(plid[0] / (nsend + 1)),
+                  ls='.',
+                  #tz=z.tzname(),
+                  label=plid[1],
+                  xdate=True)
 
 if args.sendercolors:
-    plt.legend()
+    plt.legend(title='Sender', loc='upper left', ncol=nsend + 1)
 
 if args.plotfile:
     plt.savefig(args.plotfile)