예제 #1
0
파일: googlecharts.py 프로젝트: peterbe/kl
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()