def data_to_chart_limited(self, data, limit: Optional[int] = None, color_list=None): limit = self._get_chart_element_count() if limit is None else limit try: label_list, value_list = [list(d) for d in zip(*data)] except ValueError: return None label_list, value_list = flt.set_limit_for_data_to_chart(label_list, limit, value_list) color_list = get_color_list(len(value_list), limit=limit) if color_list is None else color_list return { 'labels': label_list, 'datasets': [{'data': value_list, 'backgroundColor': color_list, 'borderColor': '#fff', 'borderWidth': 2}] }
def data_to_chart_limited(data, limit=10, color_list=None): try: label_list, value_list = map(list, zip(*data)) except ValueError: return None if limit and len(label_list) > limit: label_list = label_list[:limit] label_list.append('rest') rest_sum = sum(value_list[limit:]) value_list = value_list[:limit] value_list.append(rest_sum) if not color_list: color_list = get_color_list(len(value_list)) result = { 'labels': label_list, 'datasets': [{ 'data': value_list, 'backgroundColor': color_list, 'borderColor': color_list, 'borderWidth': 1 }] } return result
def data_to_chart(data): color_list = get_color_list(1) * len(data) return data_to_chart_limited(data, limit=0, color_list=color_list)
def set_color_list_for_data_to_chart(color_list, value_list): if not color_list: color_list = get_color_list(len(value_list)) return color_list
def get_graph_colors(): available_colors = get_color_list(10) color_list = list( islice(chain(*repeat(available_colors, 4)), None, None, 4)) return color_list
def get_graph_colors(quantity): return get_color_list(quantity, quantity) if quantity > 0 else []