def bar_species_coverage(self, filt=False):
        """
        Creates a stacked bar plot with the proportion of
        :return:
        """

        data = Counter(dict((x, 0) for x in self.species_list))

        self._reset_counter()

        for cl in self.iter_species_frequency():

            self._apply_filter(cl)
            if filt:
                data += Counter(dict((x, 1) for x, y in cl.items() if y > 0 and
                           self._get_compliance(cl) == (1, 1)))
            else:
                data += Counter(dict((x, 1) for x, y in cl.items() if y > 0))

        data = data.most_common()

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

        x_labels = [str(x[0]) for x in data]
        data = [[x[1] for x in data], [self.all_clusters - x[1] if not
                                      filt else self.all_compliant - x[1]
                                      for x in data]]

        lgd_list = ["Available data", "Missing data"]
        ax_names = [None, "Ortholog frequency"]

        return {"data": data,
                "labels": x_labels,
                "lgd_list": lgd_list,
                "ax_names": ax_names}