def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) wind = round((mun_data.gen_el_energy_wind / mun_data.pop_2017), 1) pv_roof = round((mun_data.gen_el_energy_pv_roof / mun_data.pop_2017), 1) pv_ground = round( (mun_data.gen_el_energy_pv_ground / mun_data.pop_2017), 1) hydro = round((mun_data.gen_el_energy_hydro / mun_data.pop_2017), 1) bio = round((mun_data.gen_el_energy_bio / mun_data.pop_2017), 1) data = pd.DataFrame({ 'name': [ str(_('Wind')), str(_('PV Dach')), str(_('PV Freifläche')), str(_('Wasserkraft')), str(_('Bioenergie')) ], 'y': [wind, pv_roof, pv_ground, hydro, bio] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': { 'text': str(_('Gewonnene Energie aus EE')) }, 'subtitle': { 'text': str(_('je EinwohnerIn')) }, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ MWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ MWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart(data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups') return chart
def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) hh = round((mun_data.dem_el_energy_hh * 1000 / mun_data.pop_2017)) rca = round((mun_data.dem_el_energy_rca * 1000 / mun_data.pop_2017)) ind = round((mun_data.dem_el_energy_ind * 1000 / mun_data.pop_2017)) data = pd.DataFrame({ 'name': [ str(_('Haushalte')), str(_('GHD und Landw.')), str(_('Industrie')) ], 'y': [hh, rca, ind] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': { 'text': str(_('Strombedarf')) }, 'subtitle': { 'text': str(_('je EinwohnerIn nach Verbrauchergruppe')) }, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ KWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ KWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart(data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups') return chart
def visualize(self, **kwargs): # load tooltip text from labels using container id container_id = kwargs.get('renderTo', None) if container_id is not None: tooltip_section = label_data()['charts'].get(container_id, None) if tooltip_section is not None: tooltip_text = tooltip_section.get('text', '') else: tooltip_text = '' else: tooltip_text = '' # prepare chart if self.type == 'line': visualization = highcharts.HCTimeseries( data=self.data, setup_labels=self.setup_labels, tooltip_text=tooltip_text, style='display: inline-block', **kwargs) elif self.type == 'pie': visualization = highcharts.HCPiechart( data=self.data, setup_labels=self.setup_labels, tooltip_text=tooltip_text, style='display: inline-block', **kwargs) elif self.type == 'column': visualization = highcharts.HCStackedColumn( data=self.data, setup_labels=self.setup_labels, tooltip_text=tooltip_text, style='display: inline-block', **kwargs) else: raise ValueError return visualization