From cf5a85abae4f7c07b6451c9db84212bd49b2b8ca Mon Sep 17 00:00:00 2001
From: Jan Dinkelbach <jdinkelbach@eonerc.rwth-aachen.de>
Date: Mon, 13 Nov 2017 14:21:20 +0100
Subject: [PATCH] improved input handling and added comments

---
 dataprocessing/plottools.py | 32 +++++++++++++++++++++++++-------
 dataprocessing/readtools.py | 12 ++++++++----
 2 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/dataprocessing/plottools.py b/dataprocessing/plottools.py
index e3f9da9..3bc7166 100644
--- a/dataprocessing/plottools.py
+++ b/dataprocessing/plottools.py
@@ -3,20 +3,38 @@ import numpy as np
 from .timeseries import *
 
 
-def plot_timeseries(figure_id, timeseries, plt_linestyle='-'):
+def plot_timeseries(figure_id, timeseries, plt_linestyle='-', plt_linewidth=2, plt_color=None):
+    """
+    This function plots either a single timeseries or several timeseries in the figure defined by figure_id.
+    Several timeseries (handed over in a list) are plotted in several subplots.
+    In order to plot several timeseries in one plot, the function is to be called several times (hold is activated).
+    """
     plt.figure(figure_id)
-
     if not isinstance(timeseries, list):
-        plt.plot(timeseries.time, timeseries.values, linestyle=plt_linestyle, label=timeseries.label)
+        if plt_color:
+            plt.plot(timeseries.time, timeseries.values, linestyle=plt_linestyle, label=timeseries.label, linewidth=plt_linewidth, color=plt_color)
+        else:
+            plt.plot(timeseries.time, timeseries.values, linestyle=plt_linestyle, label=timeseries.label, linewidth=plt_linewidth)
         plt.gca().autoscale(axis='x', tight=True)
         plt.legend()
     else:
         for ts in timeseries:
             plt.subplot(len(timeseries), 1, timeseries.index(ts) + 1)
-            plt.plot(ts.time, ts.values, linestyle=plt_linestyle, label=ts.label)
+            if plt_color:
+                plt.plot(ts.time, ts.values, linestyle=plt_linestyle, label=ts.label, linewidth=plt_linewidth, color=plt_color)
+            else:
+                plt.plot(ts.time, ts.values, linestyle=plt_linestyle, label=ts.label, linewidth=plt_linewidth)
             plt.gca().autoscale(axis='x', tight=True)
             plt.legend()
 
-def set_time_series_labels(timeseries_list, time_series_labels):
-    for ts in timeseries_list:
-        ts.label = time_series_labels[timeseries_list.index(ts)]
+
+def set_timeseries_labels(timeseries, timeseries_labels):
+    """
+    Sets label attribute of timeseries, later used in plotting functions.
+    Suitable for single timeseries as well as for several timeseries (handed over in a list).
+    """
+    if not isinstance(timeseries, list):
+        timeseries.label = timeseries_labels
+    else:
+        for ts in timeseries:
+            ts.label = timeseries_labels[timeseries.index(ts)]
\ No newline at end of file
diff --git a/dataprocessing/readtools.py b/dataprocessing/readtools.py
index 6bd5a05..7ea17f8 100644
--- a/dataprocessing/readtools.py
+++ b/dataprocessing/readtools.py
@@ -2,18 +2,22 @@ import numpy as np
 import pandas as pd
 from .timeseries import *
 
+
 def read_timeseries_Modelica(filename, timeseries_names=None):
     from modelicares import SimRes
     sim = SimRes(filename)
-    timeseries_list = []
     if timeseries_names is None:
         # No trajectory names specified, thus read in all
         print('TBD')
     else:
         # Read in specified time series
-        for name in timeseries_names:
-            timeseries_list.append(TimeSeries(name, sim(name).times(), sim(name).values()))
-    return timeseries_list
+        if not isinstance(timeseries_names, list):
+            timeseries = TimeSeries(timeseries_names, sim(timeseries_names).times(), sim(timeseries_names).values())
+        else:
+            for name in timeseries_names:
+                timeseries = []
+                timeseries.append(TimeSeries(name, sim(name).times(), sim(name).values()))
+    return timeseries
 
 
 def read_timeseries_PLECS(filename, timeseries_names=None):
-- 
GitLab