def _get_bar_chart(width, height, data, background_color=None, colour=None): data = sorted([(int(k), v) for (k,v) in data.items()]) min_ = min([x[1] for x in data]) max_ = max([x[1] for x in data]) chart = GroupedVerticalBarChart(width, height, y_range=(min_, max_+30)) # add 30px for some extra space chart.add_data([x[1] for x in data]) chart.set_axis_labels(pygooglechart.Axis.BOTTOM, [x[0] for x in data]) interval = (max_ - min_) / 10 if interval > 1000: interval = 5000 elif interval > 500: interval = 1000 elif interval > 100: interval = 500 elif interval > 50: interval = 100 else: interval = 50 max_range = interval * (max_ / interval +1) chart.set_axis_labels(pygooglechart.Axis.LEFT, [str(x) for x in range(0, max_range, interval)]) if background_color: chart.fill_solid(chart.BACKGROUND, background_color) if colour: chart.set_colours([colour]) return chart.get_url()