def aggregate_gross_floor_area(self, yr_e, buildings): chart_data = [] y_display_map = { 0: '0-99k', 100000: '100-199k', 200000: '200k-299k', 300000: '300k-399k', 400000: '400-499k', 500000: '500-599k', 600000: '600-699k', 700000: '700-799k', 800000: '800-899k', 900000: '900-999k', 1000000: 'over 1,000k', } max_bin = max(y_display_map) # Group buildings in this year_ending group into ranges grouped_ranges = defaultdict(list) for b in buildings: area = b['y'] # make sure anything greater than the biggest bin gets put in # the biggest bin range_bin = min(max_bin, round_down_hundred_thousand(area)) grouped_ranges[range_bin].append(b) # Now iterate over range groups to make each chart item for range_floor, buildings_in_range in grouped_ranges.items(): chart_data.append({ 'x': median([b['x'] for b in buildings_in_range]), 'y': y_display_map[range_floor], 'yr_e': yr_e }) return chart_data
def aggregate_gross_floor_area(self, yr_e, buildings): chart_data = [] y_display_map = { 0: '0-99k', 100000: '100-199k', 200000: '200k-299k', 300000: '300k-399k', 400000: '400-499k', 500000: '500-599k', 600000: '600-699k', 700000: '700-799k', 800000: '800-899k', 900000: '900-999k', 1000000: 'over 1,000k', } max_bin = max(y_display_map.keys()) # Group buildings in this year_ending group into ranges grouped_ranges = defaultdict(list) for b in buildings: area = b['y'] # make sure anything greater than the biggest bin gets put in # the biggest bin range_bin = min(max_bin, round_down_hundred_thousand(area)) grouped_ranges[range_bin].append(b) # Now iterate over range groups to make each chart item for range_floor, buildings_in_range in grouped_ranges.items(): chart_data.append({ 'x': median( [b['x'] for b in buildings_in_range] ), 'y': y_display_map[range_floor], 'yr_e': yr_e }) return chart_data