def bar_species_distribution(self, filt=False):

        if filt:
            data = Counter((len(cl) for cl in self.iter_species_frequency() if
                           self._get_compliance(cl) == (1, 1)))
        else:
            data = Counter((len(cl) for cl in self.species_frequency))

        x_labels = [x for x in list(data)]
        data = list(data.values())

        # When data is empty, return an exception
        if not data:
            return {"data": None}

        # Sort lists
        x_labels = [list(x) for x in zip(*sorted(zip(x_labels, data)))][0]

        # Convert label to strings
        x_labels = [str(x) for x in x_labels]

        title = "Taxa frequency distribution"
        ax_names = ["Number of taxa", "Ortholog frequency"]

        return {"data": [data],
                "title": title,
                "ax_names": ax_names,
                "labels": x_labels,
                "table_header": ["Number of species",
                                      "Ortholog frequency"]}