My Project
animationSupportClasses.py
Go to the documentation of this file.
1 import numpy as np
2 
3 class bcolors:
4  WARNING = '\033[93m'
5  ENDC = '\033[0m'
6  OKBLUE = '\033[31;1;4m'
7 
8 class SinglePlot():
9  def __init__(
10  self,
11  ax_number,
12  x_lim = None,
13  y_lim = None,
14  single_line_list = [],
15  starting_postions = [],
16  plot_type = 'line',
17  scale_10_percent = True,
18  x_label = "",
19  y_label = ""
20  ):
21  self.ax_number = ax_number
22  self.single_line_list = single_line_list
23  self.x_lim = x_lim
24  self.y_lim = y_lim
25  self.plot_type = plot_type
26  self.starting_positions = starting_postions
27  self.x_label = x_label
28  self.y_label = y_label
29  if(len(single_line_list) == 0 or y_lim == None or x_lim == None):
30  print(bcolors.WARNING + "Warning: initiated Singleplot without SingleLine element(s), y_lim or x_lim. Remember to initiate before plotting." + bcolors.ENDC)
31  if(len(starting_postions) == 0):
32  for single_line in single_line_list:
33  self.set_starting_postions(starting_position=single_line.starting_position)
34 
36  self,
37  n = 1,
38  starting_position = {"x": 0.0, "y": 0.0}
39  ):
40  self.starting_positions + [starting_position] * n
42  self,
43  single_line
44  ):
45  self.single_line_list.append(single_line)
46  self.set_starting_postions(starting_position=single_line.starting_position)
47 
48  def set_x_lim(
49  self,
50  x_lim_min,
51  x_lim_max
52  ):
53  self.x_lim = {'min': x_lim_min, 'max': x_lim_max}
54 
55  def set_y_lim(
56  self,
57  y_lim_min,
58  y_lim_max
59  ):
60  self.y_lim = {'min': y_lim_min, 'max': y_lim_max}
61 
62  def change_x_lim(
63  self,
64  x_lim_min_add,
65  x_lim_max_add
66  ):
67  self.x_lim = {'min': self.x_lim['min'] + x_lim_min_add, 'max': self.x_lim['max'] + x_lim_max_add}
68 
69  def change_y_lim(
70  self,
71  y_lim_min_add,
72  y_lim_max_add
73  ):
74  self.y_lim = {'min': self.y_lim['min'] + y_lim_min_add, 'max': self.y_lim['max'] + y_lim_max_add}
75 
76  def shift_x_indexes(
77  self,
78  line_number,
79  shift_amount,
80  only_shift_first = False
81  ):
82  self.single_line_list[line_number].shift_x_indexes(shift_amount, only_shift_first = only_shift_first)
83 
84  def shift_y_indexes(
85  self,
86  line_number,
87  shift_amount,
88  only_shift_first = False
89  ):
90  self.single_line_list[line_number].shift_y_indexes(shift_amount, only_shift_first = only_shift_first)
91 
92  def change_x(
93  self,
94  line_number,
95  new_height
96  ):
97  self.single_line_list[line_number].set_x_values(new_height)
98 
99  def change_y(
100  self,
101  line_number,
102  new_height
103  ):
104  self.single_line_list[line_number].set_y_values(new_height)
105 
107  self,
108  line_number
109  ):
110  return self.single_line_list[line_number].get_x_values(only_last_value_by_index=True)
111 
113  self,
114  line_number
115  ):
116  return self.single_line_list[line_number].get_y_values(only_last_value_by_index=True)
117 
118 class SingleLine():
119  def __init__(
120  self,
121  x_values,
122  y_values,
123  x_indexes,
124  y_indexes,
125  ax_number,
126  line_number,
127  starting_position = {"x": 0.0, "y": 0.0},
128  line_dependencies = None,
129  marker = ".",
130  marker_size = 0.5,
131  line_width = 1.0,
132  color = 'tab:blue'
133  ):
134  self.x_values = x_values
135  self.y_values = y_values
136  self.x_i = np.array(x_indexes)
137  self.y_i= np.array(y_indexes)
138  self.ax_number = ax_number
139  self.line_number = line_number
140  self.starting_position = starting_position
141  self.line_dependencies = line_dependencies
142  self.marker = marker
143  self.marker_size = marker_size
144  self.line_width = line_width
145  self.color = color
146 
147  def print_all(
148  self
149  ):
150  print("\nx_values: " + str(self.x_values))
151  print("y_values: " + str(self.y_values))
152  print("x_indexes: " + str(self.x_i))
153  print("y_indexes: " + str(self.y_i))
154  print("ax_number: " + str(self.ax_number))
155  print("line_number: " + str(self.line_number))
156  print("line_dependencies: " + str(self.line_dependencies))
157  print("starting_position: " + str(self.starting_position))
158 
159  def shift_x_indexes(
160  self,
161  shift_amount,
162  only_shift_first = False
163  ):
164  if(only_shift_first):
165  self.x_i[0] += shift_amount
166  else:
167  self.x_i += shift_amount
168 
169  def shift_y_indexes(
170  self,
171  shift_amount,
172  only_shift_first = False
173  ):
174  if(only_shift_first):
175  self.y_i[0] += shift_amount
176  else:
177  self.y_i += shift_amount
178 
179  def get_x_indexes(
180  self,
181  only_last_index = False
182  ):
183  if(not only_last_index):
184  return self.x_i
185  else:
186  return self.x_i[-1]
187 
188  def set_x_indexes(
189  self,
190  new_value
191  ):
192  self.x_i = new_value
193 
194  def get_y_indexes(
195  self,
196  only_last_index = False
197  ):
198  if(not only_last_index):
199  return self.y_i
200  else:
201  return self.y_i[-1]
202 
203  def set_y_indexes(
204  self,
205  new_value
206  ):
207  self.y_i = new_value
208 
209  def get_x_values(
210  self,
211  only_last_value_by_index = False
212  ):
213  if(not only_last_value_by_index):
214  return self.x_values
215  else:
216  return self.x_values[self.get_x_indexes(only_last_index=True)]
217 
218  def set_x_values(
219  self,
220  new_value
221  ):
222  self.x_values = new_value
223 
224  def get_y_values(
225  self,
226  only_last_value_by_index = False
227  ):
228  if(not only_last_value_by_index):
229  return self.y_values
230  else:
231  print("y_indexes: " + str(self.y_i))
232  return self.y_values[self.get_y_indexes(only_last_index=True)]
233 
234  def set_y_values(
235  self,
236  new_value
237  ):
238  self.y_values = new_value
239 
241  self,
242  only_last_value_by_index = False
243  ):
244  if(not only_last_value_by_index):
245  return self.starting_position
246  else:
247  return self.starting_position[self.get_y_indexes(only_last_index=True)]
def shift_y_indexes(self, line_number, shift_amount, only_shift_first=False)
def get_x_indexes(self, only_last_index=False)
def change_x(self, line_number, new_height)
def shift_x_indexes(self, shift_amount, only_shift_first=False)
def change_x_lim(self, x_lim_min_add, x_lim_max_add)
def __init__(self, ax_number, x_lim=None, y_lim=None, single_line_list=[], starting_postions=[], plot_type='line', scale_10_percent=True, x_label="", y_label="")
def get_x_values(self, only_last_value_by_index=False)
def get_y_indexes(self, only_last_index=False)
def shift_y_indexes(self, shift_amount, only_shift_first=False)
def change_y_lim(self, y_lim_min_add, y_lim_max_add)
def shift_x_indexes(self, line_number, shift_amount, only_shift_first=False)
def set_y_lim(self, y_lim_min, y_lim_max)
def get_starting_position(self, only_last_value_by_index=False)
def get_y_values(self, only_last_value_by_index=False)
def set_x_lim(self, x_lim_min, x_lim_max)
def change_y(self, line_number, new_height)