Exemplo n.º 1
0
 def plot(self, data):
     """\brief add data to the plot drawer
     \param data \ref data_chart.data_chart instance
     """
     if len(self._data_charts) == 0:
         self._data_charts.append(data)
         self._rectangle.set_x_axis_type(data.get_x_axis_type())
         self._rectangle.set_y_axis_type(data.get_y_axis_type())
     else:
         xa = data.get_x_axis_type()
         ya = data.get_y_axis_type()
         rxa = self._rectangle.get_x_axis_type()
         rya = self._rectangle.get_y_axis_type()
         if xa != rxa:
             raise od_exception_parameter_error("x axis type must be {0} not {1}".format(rxa, xa))
         elif ya != rya:
             raise od_exception_parameter_error("y axis type must be {0} not {1}".format(rya, ya))
         else:
             self._data_charts.append(data)
Exemplo n.º 2
0
 def _draw_vertical_colon_numbers(self, context, left_x, y_coordinates, numbers):
     """\brief 
     \param context - cairo context
     \param left_x - X coordinate of left top corner of colon
     \param y_coordinates - coordinates of the middle of each text
     \param numbers - list of numbers, numbers to draw
     """
     if len(y_coordinates) != len(numbers):
         raise od_exception_parameter_error(u'length of y_coordinates and numbers parameters must be same')
     context.select_font_face(self._family, self._slant, self._weight)
     context.set_font_size(self._size)
     context.set_source_rgb(*self._color)
     fextent = context.font_extents()
     for y_cord, nmb in zip(y_coordinates, numbers):
         context.move_to(left_x, y_cord - (fextent[2] / 2.) + fextent[0])
         context.show_text(format_number(nmb, 6))
Exemplo n.º 3
0
 def _generate_numbers(self, low_limit, up_limit, maxnumbers):
     """\brief generate list of number can be drawed between limits
     \param low_limit - float, lower limit of the range
     \param up_limit - float, upper limit
     \param maxnumbers - int, maximum count of numbers can be drawed
     """
     if maxnumbers < 0:
         raise od_exception_parameter_error(u'maxnumbers must at least 0')
     elif maxnumbers == 0:
         return []
     rng = trunc(up_limit - low_limit)
     if rng > maxnumbers:
         multiplier = self._find_ascending_multiplier(low_limit, up_limit, maxnumbers)
     elif rng < maxnumbers:
         multiplier = self._find_descending_multiplier(low_limit, up_limit, maxnumbers)
     else:
         multiplier = 1
     first = (low_limit if low_limit % multiplier == 0 else (trunc(low_limit / multiplier) + 1) * multiplier) # first drawing number
     ret = []
     while first <= up_limit:
         ret.append(first)
         first += multiplier
     return ret