def get_image_url(obj): """ Returns URL for the static image """ height = 210 trans = [] fuzzy = [] labels_left = [] labels_right = [] stats = get_sorted_stats(obj) for stat in stats: t = stat.translated_perc trans.append(t) labels_left.append(stat.language.name.encode('utf-8')) labels_right.append("%s%%" % t) labels_left.reverse() labels_right.reverse() chart = StackedHorizontalBarChart( width = 350, height = 14 + 13 * len(stats), x_range=(0, 100)) chart.set_bar_width(9) chart.set_colours(['78dc7d', 'dae1ee', 'efefef']) # Green, dark gray, light gray chart.set_axis_labels(Axis.LEFT, labels_left) chart.set_axis_labels(Axis.RIGHT, labels_right) chart.add_data(trans) return chart.get_url()
def get_image_url(obj, project=False): """ Returns URL for the static image """ height = 210 trans = [] fuzzy = [] labels_left = [] labels_right = [] stats = get_sorted_stats(obj, project) for stat in stats: t = stat.translated_perc trans.append(t) labels_left.append(stat.language.name.encode('utf-8')) labels_right.append("%s%%" % t) labels_left.reverse() labels_right.reverse() chart = StackedHorizontalBarChart(width=350, height=14 + 13 * len(stats), x_range=(0, 100)) chart.set_bar_width(9) chart.set_colours(['78dc7d', 'dae1ee', 'efefef']) # Green, dark gray, light gray chart.set_axis_labels(Axis.LEFT, labels_left) chart.set_axis_labels(Axis.RIGHT, labels_right) chart.add_data(trans) return chart.get_url()
def _get_definitionlookups_bar(datas, width, height, background_color=None, colour=None): max_ = max(max(v[1]) for v in datas) chart = StackedHorizontalBarChart(width, height, x_range=(0, max_ + int(.1*max_))) chart.add_data([x[1][0] for x in datas]) chart.add_data([x[1][1] for x in datas]) # 222 labels = [x[0].encode('utf8') for x in datas][::-1] # 223 import urllib #print [urllib.quote(str(a)) for a in labels] #print list(labels) chart.set_axis_labels(pygooglechart.Axis.LEFT, labels) chart.set_legend(['Looked up','Not looked up']) chart.set_colours(['ff9900','ffebcc']) chart.add_marker(0, '', 'N*f1*%', '000000', 10) if background_color: chart.fill_solid(chart.BACKGROUND, background_color) if colour: chart.set_colours([colour]) return chart.get_url()
def stacked_horizontal(): chart = StackedHorizontalBarChart(settings['width'], settings['height'], x_range=(0, 35)) chart.set_bar_width(10) chart.set_colours(['00ff00', 'ff0000']) chart.add_data([1,2,3,4,5]) chart.add_data([1,4,9,16,25]) chart.download('bar-horizontal-stacked.png')
def stacked_horizontal(): chart = StackedHorizontalBarChart(settings.width, settings.height, x_range=(0, 35)) chart.set_bar_width(10) chart.set_colours(['00ff00', 'ff0000']) chart.add_data([1,2,3,4,5]) chart.add_data([1,4,9,16,25]) chart.download('bar-horizontal-stacked.png')
def __fullfile_chart(title,data,labels,color): chart=StackedHorizontalBarChart(WIDTH, len(data)*40,x_range=[0,__max_x(data)]) chart.set_colours([color]) chart.add_data(data) chart.set_axis_labels(Axis.TOP,[title]) chart.set_axis_labels(Axis.LEFT,labels) chart.set_axis_labels(Axis.RIGHT, __r_labels(data)) file_name='%s_%s.png' % (title.replace(' ','_').lower(),datetime.now().strftime('%Y-%m-%d')) chart.download(file_name) return file_name
def bar_chart_cve(data, labels, filename, title): chart = StackedHorizontalBarChart(settings.width, settings.height, x_range=(0, 10)) chart.set_bar_width(10) chart.set_title(title) chart.set_legend([ 'Impacto','Exploitabilidade']) chart.set_colours(['0000ff', 'ff0000']) chart.set_legend_position('r') chart.set_axis_labels(Axis.LEFT, labels) chart.add_data(data) chart.download(filename)
def stacked_horizontal(): chart = StackedHorizontalBarChart(400, 200, x_range=(0, 35)) chart.set_bar_width(10) chart.set_colours(['00ff00', 'ff0000','ACff0C','B0ffE0','C0ffFF']) chart.add_data([1,2,3,4,5]) chart.set_title('This is title') chart.set_legend( ['a','b','c','d','e']) chart.set_axis_labels('y', ['aa','bb','cc','dd','ee']) chart.annotated_data() chart.download('bar-horizontal-stacked.png')
def __bar_graphic__(data, legends, axis_labels, size, steps, type=StackedVerticalBarChart, multiline=False): if multiline: max_values = [] min_values = [] for row in data: max_values.append(max(row)) min_values.append(min(row)) max_value = max(max_values) min_value = min(min_values) else: max_value = max(data) min_value = min(data) step = ((max_value*1.05)-(min_value*0.95))/steps left_axis = range(int(min_value*0.95), int(max_value*1.05), int(step)) left_axis[0]='' if type==StackedHorizontalBarChart: graph = StackedHorizontalBarChart(size[0], size[1], x_range=(0, max_value*1.05)) graph.set_axis_labels(Axis.BOTTOM, left_axis) graph.set_axis_labels(Axis.LEFT, axis_labels) elif type==StackedVerticalBarChart: graph = StackedVerticalBarChart(size[0], size[1], y_range=(0, max_value*1.05)) graph.set_axis_labels(Axis.LEFT, left_axis) graph.set_axis_labels(Axis.BOTTOM, axis_labels) elif type==GroupedHorizontalBarChart: graph = GroupedHorizontalBarChart(size[0], size[1], x_range=(0, max_value*1.05)) graph.set_axis_labels(Axis.BOTTOM, left_axis) graph.set_axis_labels(Axis.LEFT, axis_labels) graph.set_bar_spacing(5) elif type==GroupedVerticalBarChart: graph = GroupedVerticalBarChart(size[0], size[1], y_range=(0, max_value*1.05)) graph.set_axis_labels(Axis.LEFT, left_axis) graph.set_axis_labels(Axis.BOTTOM, axis_labels) graph.set_bar_spacing(5) else: pass #raise exception if multiline: for fila in data: graph.add_data(fila) else: graph.add_data(data) graph.set_colours([ 'FFBC13','22A410','E6EC23','2B2133','BD0915','3D43BD']) graph.set_bar_width(40) graph.set_legend(legends) graph.set_legend_position('b') return graph
def bar_chart_cve(data, labels, filename, title): chart = StackedHorizontalBarChart(settings.width, settings.height, x_range=(0, 10)) chart.set_bar_width(10) chart.set_title(title) chart.set_legend(['Impacto', 'Exploitabilidade']) chart.set_colours(['0000ff', 'ff0000']) chart.set_legend_position('r') chart.set_axis_labels(Axis.LEFT, labels) chart.add_data(data) chart.download(filename)
def display_user_stats(self, type="pie", filepath="chart.png"): """ filepath = display, filepath = url, filepath = real filepath""" """displays the number of VMs a user is running""" """ types supported pie, bar""" values = [] label_values = [] # print self.users max_v = 0 for name in self.users: number = self.users[name]['count'] values.append(number) label_values.append(name + ":" + str(number)) max_v = max(max_v, number) # print values # print label_values if type == "pie": chart = PieChart3D(500, 200) chart.set_pie_labels(label_values) if type == "bar": chart = StackedHorizontalBarChart(500,200, x_range=(0, max_v)) # the labels seem wrong, not sure why i have to call reverse chart.set_axis_labels('y', reversed(label_values)) # setting the x axis labels left_axis = range(0, max_v + 1, 1) left_axis[0] = '' chart.set_axis_labels(Axis.BOTTOM, left_axis) chart.set_bar_width(10) chart.set_colours(['00ff00', 'ff0000']) # Add some data chart.add_data(values) # Assign the labels to the pie data if filepath == "display": #os.system ("open -a /Applications/Safari.app " + '"' + url + '"') os.system ("open " + filepath) elif filepath == "url": url = chart.get_url() print url else: Utility.ensure_dir(filepath) chart.download(filepath)
def generate_bar_chart_by_agency_from_local(): # initialize lists agency_names = [] counts = [] colours = [] combined = [] i = 0 # get data for a in Agency.objects.all(): qset = FedRegDoc.objects.filter(agencies__name=a.name) if a.name: agency_names.append(a.name) counts.append(qset.count()) elif a.raw_name: agency_names.append(a.raw_name) counts.append(qset.count()) # the following section is a hack to order the chart properly len_counts = len(counts) while i < len_counts: combined.append((agency_names[i], counts[i])) i += 1 i=0 combined = sorted(combined, key=lambda c: c[1], reverse=True) #print "combined", combined counts = [] agency_names = [] while i < len_counts: counts.append(combined[i][1]) agency_names.append(combined[i][0]) i += 1 agency_names.reverse() # set up chart chart = StackedHorizontalBarChart(600, 400, y_range=[0, max(counts)+10]) chart.set_colours(['0000FF']) chart.set_axis_labels(Axis.LEFT, agency_names) chart.add_data(counts) chart.set_bar_width(10) chart_url = chart.get_url() #print "chart_url by agency", chart_url return chart_url
def get_bar_chart_image(self, data, **kw): """ Return image path of downloaded image from google charts api""" if len(data['y']) == 0: return '' from pygooglechart import StackedHorizontalBarChart, Axis width = int(kw.get('width', 400)) height = int(kw.get('height', 250)) max_y = max(data['y']) chart = StackedHorizontalBarChart(width, height, x_range=[0, max_y], y_range=[0, len(data['x'])]) chart.add_data(data['y']) chart.set_colours(['76A4FB']) chart.set_axis_labels(Axis.LEFT, data['x']) bottom_labels = [ utils.intcomma(x) for x in range(0, max_y + 1, (max_y) / 5) ] chart.set_axis_labels(Axis.BOTTOM, bottom_labels) #Generate an hash from arguments kw_hash = hash(tuple(sorted(kw.items()))) data_hash = hash( tuple(sorted([(k, tuple(v)) for k, v in data.iteritems()]))) args_hash = str(kw_hash) + str(data_hash) image_path = os.path.join(TARGET_DIR, "%s.png" % args_hash) if bool(kw.get('refresh', False)) or args_hash not in self.charts: #Get image from google chart api chart.download(image_path) if args_hash not in self.charts: self.charts.append(args_hash) self._p_changed = True return image_path
def main(argv): nTraducidas = int(argv[0]) nFuzzy = int(argv[1]) nNoTraducidas = int(argv[2]) totalCadenas = nTraducidas + nFuzzy + nNoTraducidas pTraducidas = (nTraducidas * 100) / totalCadenas pNoTraducidas = 100 - pTraducidas #print '% traducidos: ' + str(pTraducidas) + ' - % No Traducidos: ' + str(pNoTraducidas) chart = StackedHorizontalBarChart(settings.width, settings.height, x_range=(0, 100)) # chart.set_bar_width(100) chart.set_colours(['00ff00', 'ff0000']) chart.fill_solid('bg', 'e3d185') chart.set_zero_line(0, 0) chart.add_data([pTraducidas]) chart.add_data([pNoTraducidas]) chart.download(argv[3])
def get_bar_chart_image(self, data, **kw): """ Return image path of downloaded image from google charts api""" if len(data['y']) == 0: return '' from pygooglechart import StackedHorizontalBarChart, Axis width = int(kw.get('width', 400)) height = int(kw.get('height', 250)) max_y = max(data['y']) chart = StackedHorizontalBarChart(width, height, x_range=[0, max_y], y_range=[0, len(data['x'])]) chart.add_data(data['y']) chart.set_colours(['76A4FB']) chart.set_axis_labels(Axis.LEFT, data['x']) bottom_labels = [utils.intcomma(x) for x in range(0, max_y + 1, (max_y)/5)] chart.set_axis_labels(Axis.BOTTOM, bottom_labels) #Generate an hash from arguments kw_hash = hash(tuple(sorted(kw.items()))) data_hash = hash(tuple(sorted([(k, tuple(v)) for k, v in data.iteritems()]))) args_hash = str(kw_hash) + str(data_hash) image_path = os.path.join(TARGET_DIR, "%s.png" % args_hash) if bool(kw.get('refresh', False)) or args_hash not in self.charts: #Get image from google chart api chart.download(image_path) if args_hash not in self.charts: self.charts.append(args_hash) self._p_changed = True return image_path
def _bar_graph(data, legends, axis_labels, size, steps, type=StackedVerticalBarChart, multiline=False): if multiline: max_values = [] min_values = [] for row in data: max_values.append(max(row)) min_values.append(min(row)) max_value = max(max_values) min_value = min(min_values) else: max_value = max(data) min_value = min(data) #validando si hay datos para hacer grafico if max_value == 0: return None step = ((max_value * 1.05) - (min_value * 0.95)) / steps #validando en caso de el paso sea menor que uno y de cero en la conversion if step < 1: step = 1 tope = int(round(max_value * 1.05)) if tope < max_value: tope += 2 else: tope += 1 left_axis = range(int(round(min_value * 0.95)), tope, int(step)) left_axis[0] = '' if type == StackedHorizontalBarChart: graph = StackedHorizontalBarChart(size[0], size[1], x_range=(0, max_value * 1.05)) graph.set_axis_labels(Axis.BOTTOM, left_axis) if axis_labels: graph.set_axis_labels(Axis.LEFT, axis_labels) elif type == StackedVerticalBarChart: graph = StackedVerticalBarChart(size[0], size[1], y_range=(0, max_value * 1.05)) graph.set_axis_labels(Axis.LEFT, left_axis) if axis_labels: graph.set_axis_labels(Axis.BOTTOM, axis_labels) elif type == GroupedHorizontalBarChart: graph = GroupedHorizontalBarChart(size[0], size[1], x_range=(0, max_value * 1.05)) graph.set_axis_labels(Axis.BOTTOM, left_axis) if axis_labels: graph.set_axis_labels(Axis.LEFT, axis_labels) graph.set_bar_spacing(5) elif type == GroupedVerticalBarChart: graph = GroupedVerticalBarChart(size[0], size[1], y_range=(0, max_value * 1.05)) graph.set_axis_labels(Axis.LEFT, left_axis) if axis_labels: graph.set_axis_labels(Axis.BOTTOM, axis_labels) graph.set_bar_spacing(5) else: pass #raise exception if multiline: for fila in data: graph.add_data(fila) else: graph.add_data(data) graph.set_colours( ['FFBC13', '22A410', 'E6EC23', '2B2133', 'BD0915', '3D43BD']) graph.set_bar_width(44) graph.set_legend(legends) graph.set_legend_position('b') return graph
def _bar_graph(data, legends, axis_labels, size, steps, type=StackedVerticalBarChart, multiline=False): if multiline: max_values = [] min_values = [] for row in data: max_values.append(max(row)) min_values.append(min(row)) max_value = max(max_values) min_value = min(min_values) else: max_value = max(data) min_value = min(data) #validando si hay datos para hacer grafico if max_value==0: return None step = ((max_value*1.05)-(min_value*0.95))/steps #validando en caso de el paso sea menor que uno y de cero en la conversion if step<1: step = 1 tope = int(round(max_value*1.05)) if tope < max_value: tope+=2 else: tope+=1 left_axis = range(int(round(min_value*0.95)), tope, int(step)) left_axis[0]='' if type==StackedHorizontalBarChart: graph = StackedHorizontalBarChart(size[0], size[1], x_range=(0, max_value*1.05)) graph.set_axis_labels(Axis.BOTTOM, left_axis) if axis_labels: graph.set_axis_labels(Axis.LEFT, axis_labels) elif type==StackedVerticalBarChart: graph = StackedVerticalBarChart(size[0], size[1], y_range=(0, max_value*1.05)) graph.set_axis_labels(Axis.LEFT, left_axis) if axis_labels: graph.set_axis_labels(Axis.BOTTOM, axis_labels) elif type==GroupedHorizontalBarChart: graph = GroupedHorizontalBarChart(size[0], size[1], x_range=(0, max_value*1.05)) graph.set_axis_labels(Axis.BOTTOM, left_axis) if axis_labels: graph.set_axis_labels(Axis.LEFT, axis_labels) graph.set_bar_spacing(5) elif type==GroupedVerticalBarChart: graph = GroupedVerticalBarChart(size[0], size[1], y_range=(0, max_value*1.05)) graph.set_axis_labels(Axis.LEFT, left_axis) if axis_labels: graph.set_axis_labels(Axis.BOTTOM, axis_labels) graph.set_bar_spacing(5) else: pass #raise exception if multiline: for fila in data: graph.add_data(fila) else: graph.add_data(data) graph.set_colours(COLORS) graph.set_bar_width(32) graph.set_legend(legends) graph.set_legend_position('b') return graph
https://github.com/gak/pygooglechart/blob/master/examples/bar.py from pygooglechart import StackedHorizontalBarChart, StackedVerticalBarChart, \ GroupedHorizontalBarChart, GroupedVerticalBarChart new_chart = StackedHorizontalBarChart(800,600) >>> data_list=[] >>> for item in data: if item == '': item = 0 data_list.append(item) >>> labels = [] >>> labels = data_dict.keys() >>> new_chart.set_axis_labels('y', labels) 0 >>> data_list=[] >>> for item in data: if item == '': item = 0 data_list.append(item) new_chart.set_colours(['D6F8F8'])
from pygooglechart import SimpleLineChart, StackedHorizontalBarChart, StackedVerticalBarChart, \ GroupedHorizontalBarChart, GroupedVerticalBarChart from pygooglechart import PieChart2D from pygooglechart import PieChart3D import os import sys ROOT = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, os.path.join(ROOT, '..')) l = [0, 0, 0, 1, 1, 1, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 11, 17, 20, 26, 36, 36, 38, 42, 47, 49, 54, 59, 59, 66, 66, 67, 68, 69, 77, 85, 86, 87, 88, 93, 115, 116, 121, 122, 137, 152, 173, 180, 181, 183, 191, 202, 203, 208, 233, 238, 241, 247, 262, 263, 268, 271, 273, 308, 325, 343, 346, 360, 365, 378, 410, 419, 479, 490, 535, 550, 550, 562, 608, 655, 670, 687, 709, 716, 745, 758, 769, 801, 807, 897, 899, 904, 907, 929, 1074, 1106, 1120, 1120, 1357, 1421, 3049] a = ['\xd0\xa8\xd0\xb5\xd0\xb2\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb5 \xd1\x84\xd0\xb8\xd0\xb5\xd1\x81\xd1\x82\xd0\xb0 ', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 e230', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 gl320', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 c230', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 cl500', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 e220', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 e320', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 e240', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 g500', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 ml350', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 c200', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 c220', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 ml320', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 viano', '\xd0\x91\xd0\x9c\xd0\x92 325', '\xd0\x91\xd0\x9c\xd0\x92 530', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 e200', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 e280', '\xd0\x91\xd0\x9c\xd0\x92 x6', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 s600', '\xd0\xa5\xd0\xbe\xd0\xbd\xd0\xb4\xd0\xb0 \xd0\xbb\xd0\xb5\xd0\xb3\xd0\xb5\xd0\xbd\xd0\xb4', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 c180', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 230', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 s500', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd1\x85\xd0\xb0\xd0\xb9\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb4\xd0\xb5\xd1\x80', '\xd0\x91\xd0\x9c\xd0\x92 318', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xbf\xd1\x80\xd0\xb8\xd1\x83\xd1\x81', '\xd0\x9c\xd0\xb0\xd0\xb7\xd0\xb4\xd0\xb0 CX', '\xd0\x91\xd0\x9c\xd0\x92 320', '\xd0\xa4\xd0\xbe\xd1\x80\xd0\xb4 c-max', '\xd0\xa5\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb9 \xd1\x81\xd0\xb0\xd0\xbd\xd1\x82\xd0\xb0\xd1\x84\xd0\xb5', '\xd0\x91\xd0\x9c\xd0\x92 x3', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd0\xbc\xd1\x83\xd1\x80\xd0\xb0\xd0\xbd\xd0\xbe', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xb0\xd1\x83\xd1\x80\xd0\xb8\xd1\x81', '\xd0\xa5\xd0\xbe\xd0\xbd\xd0\xb4\xd0\xb0 H-RV', '\xd0\x90\xd1\x83\xd0\xb4\xd0\xb8 q7', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xbc\xd0\xb0\xd1\x80\xd0\xba', '\xd0\x9c\xd0\xb8\xd1\x82\xd1\x81\xd1\x83\xd0\xb1\xd0\xb8\xd1\x81\xd0\xb8 \xd0\xbe\xd1\x83\xd1\x82\xd0\xbb\xd0\xb0\xd0\xbd\xd0\xb4\xd0\xb5\xd1\x80', '\xd0\xa5\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb9 tucson', '\xd0\x91\xd0\x9c\xd0\x92 525', '\xd0\xa8\xd0\xb5\xd0\xb2\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb5 \xd0\xba\xd0\xb0\xd0\xbf\xd1\x82\xd0\xb8\xd0\xb2\xd0\xb0', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd1\x81\xd0\xb5\xd0\xbb\xd0\xb8\xd0\xba\xd0\xb0', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd0\xbd\xd0\xbe\xd1\x83\xd1\x82', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd1\x80\xd0\xb0\xd0\xb2 4', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd0\xbf\xd0\xb0\xd1\x82\xd1\x84\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb4\xd0\xb5\xd1\x80', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd1\x8f\xd1\x80\xd0\xb8\xd1\x81', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd1\x82\xd0\xb8\xd0\xb8\xd0\xb4\xd0\xb0', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd0\xbc\xd0\xb8\xd0\xba\xd1\x80\xd0\xb0', '\xd0\xa4\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd1\x81\xd0\xb2\xd0\xb0\xd0\xb3\xd0\xb5\xd0\xbd \xd1\x82\xd1\x83\xd0\xb0\xd1\x80\xd0\xb5\xd0\xb3', '\xd0\x9c\xd0\xb5\xd1\x80\xd1\x81\xd0\xb5\xd0\xb4\xd0\xb5\xd1\x81 190', '\xd0\xa4\xd0\xbe\xd1\x80\xd0\xb4 \xd1\x84\xd1\x8c\xd1\x8e\xd0\xb6\xd0\xb8\xd0\xbd', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd0\xb8\xd0\xba\xd1\x81\xd1\x82\xd1\x80\xd0\xb5\xd0\xb8\xd0\xbb', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd0\xba\xd0\xb0\xd1\x88\xd0\xba\xd0\xb0\xd0\xb9', '\xd0\x90\xd1\x83\xd0\xb4\xd0\xb8 \xd0\xb08', '\xd0\x91\xd0\x9c\xd0\x92 x5', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd1\x82\xd0\xb5\xd0\xb0\xd0\xbd\xd0\xb0', '\xd0\x9e\xd0\xbf\xd0\xb5\xd0\xbb\xd1\x8c \xd0\xb7\xd0\xb0\xd1\x84\xd0\xb8\xd1\x80\xd0\xb0', '\xd0\x9c\xd0\xb8\xd1\x82\xd1\x81\xd1\x83\xd0\xb1\xd0\xb8\xd1\x81\xd0\xb8 \xd0\xba\xd0\xbe\xd0\xbb\xd1\x8c\xd1\x82', '\xd0\xa0\xd0\xb5\xd0\xbd\xd0\xbe \xd1\x81\xd1\x86\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xba', '\xd0\xa0\xd0\xb5\xd0\xbd\xd0\xbe \xd0\xbb\xd0\xb0\xd0\xb3\xd1\x83\xd0\xbd\xd0\xb0', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd0\xbf\xd0\xb0\xd1\x82\xd1\x80\xd0\xbe\xd0\xbb', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xba\xd0\xb0\xd1\x80\xd0\xb8\xd0\xbd\xd0\xb0', '\xd0\xa0\xd0\xb5\xd0\xbd\xd0\xbe \xd1\x81\xd0\xb8\xd0\xbc\xd0\xb1\xd0\xbe\xd0\xbb', '\xd0\xa5\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb9 \xd0\xb3\xd0\xb5\xd1\x82\xd1\x86', '\xd0\xa8\xd0\xba\xd0\xbe\xd0\xb4\xd0\xb0 \xd1\x84\xd0\xb0\xd0\xb1\xd0\xb8\xd1\x8f', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd0\xbc\xd0\xb0\xd0\xba\xd1\x81\xd0\xb8\xd0\xbc\xd0\xb0', '\xd0\x9e\xd0\xbf\xd0\xb5\xd0\xbb\xd1\x8c \xd0\xba\xd0\xbe\xd1\x80\xd1\x81\xd0\xb0', '\xd0\xa8\xd0\xb5\xd0\xb2\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb5 \xd0\xbb\xd0\xb0\xd0\xbd\xd0\xbe\xd1\x81', '\xd0\x9c\xd0\xb0\xd0\xb7\xd0\xb4\xd0\xb0 323', '\xd0\xa5\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb9 \xd1\x8d\xd0\xbb\xd0\xb0\xd0\xbd\xd1\x82\xd1\x80\xd0\xb0', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 Land Cruiser', '\xd0\x9c\xd0\xb8\xd1\x82\xd1\x81\xd1\x83\xd0\xb1\xd0\xb8\xd1\x81\xd0\xb8 \xd0\xba\xd0\xb0\xd1\x80\xd0\xb8\xd0\xb7\xd0\xbc\xd0\xb0', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xb0\xd0\xb2\xd0\xb5\xd0\xbd\xd1\x81\xd0\xb8\xd1\x81', '\xd0\xa5\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb9 \xd1\x81\xd0\xbe\xd0\xbd\xd0\xb0\xd1\x82\xd0\xb0', '\xd0\x90\xd1\x83\xd0\xb4\xd0\xb8 \xd0\xb04', '\xd0\xa5\xd0\xbe\xd0\xbd\xd0\xb4\xd0\xb0 C-RV', '\xd0\x9c\xd0\xb0\xd0\xb7\xd0\xb4\xd0\xb0 626', '\xd0\xa8\xd0\xb5\xd0\xb2\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb5 \xd0\xb0\xd0\xb2\xd0\xb5\xd0\xbe', '\xd0\xa8\xd0\xb5\xd0\xb2\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb5 \xd0\xb0\xd0\xb2\xd0\xb5\xd0\xbe', '\xd0\x90\xd1\x83\xd0\xb4\xd0\xb8 \xd0\xb06', '\xd0\x9c\xd0\xb8\xd1\x82\xd1\x81\xd1\x83\xd0\xb1\xd0\xb8\xd1\x81\xd0\xb8 \xd0\xb3\xd0\xb0\xd0\xbb\xd0\xb0\xd0\xbd\xd1\x82', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xba\xd0\xb0\xd0\xbc\xd1\x80\xd0\xb8', '\xd0\xa4\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd1\x81\xd0\xb2\xd0\xb0\xd0\xb3\xd0\xb5\xd0\xbd \xd0\xb3\xd0\xbe\xd0\xbb\xd1\x8c\xd1\x84', '\xd0\xa0\xd0\xb5\xd0\xbd\xd0\xbe \xd0\xbc\xd0\xb5\xd0\xb3\xd0\xb0\xd0\xbd', '\xd0\x9e\xd0\xbf\xd0\xb5\xd0\xbb\xd1\x8c \xd0\xbe\xd0\xbc\xd0\xb5\xd0\xb3\xd0\xb0', '\xd0\xa8\xd0\xb5\xd0\xb2\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb5 \xd0\xbb\xd0\xb0\xd1\x87\xd0\xb5\xd1\x82\xd1\x82\xd0\xb8', '\xd0\x9c\xd0\xb0\xd0\xb7\xd0\xb4\xd0\xb0 6', '\xd0\xa5\xd0\xbe\xd0\xbd\xd0\xb4\xd0\xb0 \xd0\xb0\xd0\xba\xd0\xba\xd0\xbe\xd1\x80\xd0\xb4', '\xd0\x9c\xd0\xb8\xd1\x82\xd1\x81\xd1\x83\xd0\xb1\xd0\xb8\xd1\x81\xd0\xb8 \xd0\xbf\xd0\xb0\xd0\xb4\xd0\xb6\xd0\xb5\xd1\x80\xd0\xbe', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd0\xbf\xd1\x80\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x80\xd0\xb0', '\xd0\xa5\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb9 \xd0\xb0\xd0\xba\xd1\x86\xd0\xb5\xd0\xbd\xd1\x82', '\xd0\xa2\xd0\xbe\xd0\xb9\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xba\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbb\xd0\xbb\xd0\xb0', '\xd0\xa5\xd0\xbe\xd0\xbd\xd0\xb4\xd0\xb0 \xd1\x81\xd0\xb8\xd0\xb2\xd0\xb8\xd0\xba', '\xd0\xa0\xd0\xb5\xd0\xbd\xd0\xbe \xd0\xbb\xd0\xbe\xd0\xb3\xd0\xb0\xd0\xbd', '\xd0\x9c\xd0\xb0\xd0\xb7\xd0\xb4\xd0\xb0 3', '\xd0\xa8\xd0\xba\xd0\xbe\xd0\xb4\xd0\xb0 \xd0\xbe\xd0\xba\xd1\x82\xd0\xb0\xd0\xb2\xd0\xb8\xd1\x8f', '\xd0\x9c\xd0\xb8\xd1\x82\xd1\x81\xd1\x83\xd0\xb1\xd0\xb8\xd1\x81\xd0\xb8 \xd0\xbb\xd0\xb0\xd0\xbd\xd1\x81\xd0\xb5\xd1\x80', '\xd0\xa4\xd0\xbe\xd1\x80\xd0\xb4 \xd0\xbc\xd0\xbe\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xbe', '\xd0\x9d\xd0\xb8\xd1\x81\xd1\x81\xd0\xb0\xd0\xbd \xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbc\xd0\xb5\xd1\x80\xd0\xb0', '\xd0\xa4\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xba\xd1\x81\xd0\xb2\xd0\xb0\xd0\xb3\xd0\xb5\xd0\xbd \xd0\xbf\xd0\xb0\xd1\x81\xd1\x81\xd0\xb0\xd1\x82', '\xd0\x9e\xd0\xbf\xd0\xb5\xd0\xbb\xd1\x8c \xd0\xb0\xd1\x81\xd1\x82\xd1\x80\xd0\xb0', '\xd0\x9e\xd0\xbf\xd0\xb5\xd0\xbb\xd1\x8c \xd0\xb2\xd0\xb5\xd0\xba\xd1\x82\xd1\x80\xd0\xb0', '\xd0\xa4\xd0\xbe\xd1\x80\xd0\xb4 \xd1\x84\xd0\xbe\xd0\xba\xd1\x83\xd1\x81'] index = 0 for i in a: print ("%s;%s"%(i.decode("utf-8"),l[index]) ) index+=1 chart = StackedHorizontalBarChart(400, 700, x_range=(0, max(l) ) ) chart.set_bar_width( 3 ) chart.set_colours(['8159F7', ]) chart.add_data( l ) chart.set_title( "Razbor by models" ) chart.set_legend( ['',] ) a.reverse() chart.set_axis_labels('y', a ) chart.annotated_data() chart.download( "razbors_By_models_car.png")
def __bar_graphic__(data, legends, axis_labels, size, steps, type=StackedVerticalBarChart, multiline=False): if multiline: max_values = [] min_values = [] for row in data: max_values.append(max(row)) min_values.append(min(row)) max_value = max(max_values) min_value = min(min_values) else: max_value = max(data) min_value = min(data) step = ((max_value * 1.05) - (min_value * 0.95)) / steps left_axis = range(int(min_value * 0.95), int(max_value * 1.05), int(step)) left_axis[0] = '' if type == StackedHorizontalBarChart: graph = StackedHorizontalBarChart(size[0], size[1], x_range=(0, max_value * 1.05)) graph.set_axis_labels(Axis.BOTTOM, left_axis) graph.set_axis_labels(Axis.LEFT, axis_labels) elif type == StackedVerticalBarChart: graph = StackedVerticalBarChart(size[0], size[1], y_range=(0, max_value * 1.05)) graph.set_axis_labels(Axis.LEFT, left_axis) graph.set_axis_labels(Axis.BOTTOM, axis_labels) elif type == GroupedHorizontalBarChart: graph = GroupedHorizontalBarChart(size[0], size[1], x_range=(0, max_value * 1.05)) graph.set_axis_labels(Axis.BOTTOM, left_axis) graph.set_axis_labels(Axis.LEFT, axis_labels) graph.set_bar_spacing(5) elif type == GroupedVerticalBarChart: graph = GroupedVerticalBarChart(size[0], size[1], y_range=(0, max_value * 1.05)) graph.set_axis_labels(Axis.LEFT, left_axis) graph.set_axis_labels(Axis.BOTTOM, axis_labels) graph.set_bar_spacing(5) else: pass #raise exception if multiline: for fila in data: graph.add_data(fila) else: graph.add_data(data) graph.set_colours( ['FFBC13', '22A410', 'E6EC23', '2B2133', 'BD0915', '3D43BD']) graph.set_bar_width(40) graph.set_legend(legends) graph.set_legend_position('b') return graph