def makeStackedBarChart(barchartData, barChartColors, max_y, maxCol): from pygooglechart import Axis from pygooglechart import StackedVerticalBarChart #depending on the maxCol value set the max value of the Y axis so that the graphics is OK even for the biggest column maxY = max_y left_axis = range(0, maxY + 1, max_y/5) if maxCol < 50: maxY = 50 left_axis = range(0, maxY + 1, 10) elif maxCol > 50 and maxCol <= 100: maxY = 100 left_axis = range(0, maxY + 1, 20) elif maxCol > 100 and maxCol <= 200: maxY = 200 left_axis = range(0, maxY + 1, 40) elif maxCol > 200 and maxCol <= 300: maxY = 300 left_axis = range(0, maxY + 1, 60) elif maxCol > 300 and maxCol <= 400: maxY = 400 left_axis = range(0, maxY + 1, 80) elif maxCol > 400 and maxCol <= 500: maxY = 500 left_axis = range(0, maxY + 1, 100) elif maxCol > 500 and maxCol <= 600: maxY = 600 left_axis = range(0, maxY + 1, 120) elif maxCol > 600 and maxCol <= 900: maxY = 900 left_axis = range(0, maxY + 1, 180) elif maxCol > 900 and maxCol <= 3000: maxY = 3000 left_axis = range(0, maxY + 1, 600) elif maxCol > 3000 and maxCol <= 6000: maxY = 6000 left_axis = range(0, maxY + 1, 1200) elif maxCol > 6000 and maxCol <= 9000: maxY = 9000 left_axis = range(0, maxY + 1, 1800) elif maxCol > 9000 and maxCol <= 12000: maxY = 12000 left_axis = range(0, maxY + 1, 2400) elif maxCol > 12000 and maxCol <= 15000: maxY = 15000 left_axis = range(0, maxY + 1, 3000) elif maxCol > 15000 and maxCol <= 18000: maxY = 18000 left_axis = range(0, maxY + 1, 3600) elif maxCol > 18000 and maxCol <= 30000: maxY = 30000 left_axis = range(0, maxY + 1, 6000) elif maxCol > 30000 and maxCol <= 39000: maxY = 39000 left_axis = range(0, maxY + 1, 7800) elif maxCol > 39000 and maxCol <= 50000: maxY = 50000 left_axis = range(0, maxY + 1, 10000) elif maxCol > 50000 and maxCol <= 80000: maxY = 80000 left_axis = range(0, maxY + 1, 16000) elif maxCol > 80000 and maxCol <= 100000: maxY = 100000 left_axis = range(0, maxY + 1, 20000) elif maxCol > 100000 and maxCol <= 120000: maxY = 120000 left_axis = range(0, maxY + 1, 24000) elif maxCol > 120000 and maxCol <= 150000: maxY = 150000 left_axis = range(0, maxY + 1, 30000) elif maxCol > 150000 and maxCol <= 180000: maxY = 180000 left_axis = range(0, maxY + 1, 36000) elif maxCol > 180000 and maxCol <= 210000: maxY = 210000 left_axis = range(0, maxY + 1, 42000) else: maxY = 250000 left_axis = range(0, maxY + 1, 50000) barchart = None #depending on the number of periods set the width of the chart and width of the bars in the chart if numberPeriods < 20: barchart = StackedVerticalBarChart(50*numberPeriods, 150, y_range=(0, maxY)) barchart.set_bar_width(23) else: barchart = StackedVerticalBarChart(1000, 150, y_range=(0, maxY)) barchart.set_bar_width(20) #set the data for data in barchartData: barchart.add_data(data) #get the labes of the X axis - these are the time periods bottomAxisLabels = getBottomAxisLabels() #make 5 horizontal lines crossing the Y axis barchart.set_grid(0, 20) #set the colors of the time charts barchart.set_colours(barChartColors) #at (0,0) do not set a label, set the X and Y axis left_axis[0] = '' barchart.set_axis_labels(Axis.LEFT, left_axis) barchart.set_axis_labels(Axis.BOTTOM, bottomAxisLabels) return (barchart, maxY, barChartColors)