Exemple #1
0
 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
Exemple #2
0
 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