def METHOD_NAME(self):
    analysis_fields = self.remove_unused_fields(self.data, self.analysis_fields)
    if len(self.buildings) == 1:
        assert len(self.data) == 1, 'Expected DataFrame with only one row'
        building_data = self.data.iloc[0]
        traces = []
        area = building_data["GFA_m2"]
        x = ["Absolute [MWh/yr]", "Relative [kWh/m2.yr]"]
        for field in analysis_fields:
            name = NAMING[field]
            y = [building_data[field], building_data[field] / area * 1000]
            trace = go.Bar(x=x, y=y, name=name, marker=dict(color=COLOR[field]))
            traces.append(trace)
        return traces
    else:
        traces = []
        dataframe = self.data
        for field in analysis_fields:
            dataframe[field] = dataframe[field] * 1000 / dataframe["GFA_m2"]  # in kWh/m2y
        dataframe['total'] = dataframe[analysis_fields].sum(axis=1)
        dataframe.sort_values(by='total', ascending=False, inplace=True)
        dataframe.reset_index(inplace=True, drop=True)
        for field in analysis_fields:
            y = dataframe[field]
            name = NAMING[field]
            total_percent = (y / dataframe['total'] * 100).round(2).values
            total_percent_txt = ["(%.2f %%)" % x for x in total_percent]
            trace = go.Bar(x=dataframe["Name"], y=y, name=name, text=total_percent_txt, marker=dict(color=COLOR[field]))
            traces.append(trace)
        return traces