Plot respect to the chemical potential of the Seebeck effective mass
        calculated as explained in Ref.
        Gibbs, Z. M. et al., Effective mass and fermi surface complexity factor 
        from ab initio band structure calculations. 
        npj Computational Materials 3, 8 (2017).

        Args:
            output: 'average' returns the seebeck effective mass calculated
                using the average of the three diagonal components of the
                seebeck tensor. 'tensor' returns the seebeck effective mass
                respect to the three diagonal components of the seebeck tensor.
            temps:  list of temperatures of calculated seebeck.
            Lambda: fitting parameter used to model the scattering (0.5 means
                constant relaxation time).
        Returns:
            a matplotlib object

def plot_seebeck_eff_mass_mu(self, temps=[300], output='average',
                                 Lambda=0.5):
        """
        Plot respect to the chemical potential of the Seebeck effective mass
        calculated as explained in Ref.
        Gibbs, Z. M. et al., Effective mass and fermi surface complexity factor 
        from ab initio band structure calculations. 
        npj Computational Materials 3, 8 (2017).

        Args:
            output: 'average' returns the seebeck effective mass calculated
                using the average of the three diagonal components of the
                seebeck tensor. 'tensor' returns the seebeck effective mass
                respect to the three diagonal components of the seebeck tensor.
            temps:  list of temperatures of calculated seebeck.
            Lambda: fitting parameter used to model the scattering (0.5 means
                constant relaxation time).
        Returns:
            a matplotlib object
        """

        import matplotlib.pyplot as plt
        plt.figure(figsize=(9, 7))
        for T in temps:
            sbk_mass = self._bz.get_seebeck_eff_mass(output=output, temp=T,
                                                     Lambda=0.5)
            # remove noise inside the gap
            start = self._bz.mu_doping['p'][T][0]
            stop = self._bz.mu_doping['n'][T][0]
            mu_steps_1 = []
            mu_steps_2 = []
            sbk_mass_1 = []
            sbk_mass_2 = []
            for i, mu in enumerate(self._bz.mu_steps):
                if mu <= start:
                    mu_steps_1.append(mu)
                    sbk_mass_1.append(sbk_mass[i])
                elif mu >= stop:
                    mu_steps_2.append(mu)
                    sbk_mass_2.append(sbk_mass[i])

            plt.plot(mu_steps_1, sbk_mass_1, label=str(T) + 'K', linewidth=3.0)
            plt.plot(mu_steps_2, sbk_mass_2, linewidth=3.0)
            if output == 'average':
                plt.gca().get_lines()[1].set_c(plt.gca().get_lines()[0].get_c())
            elif output == 'tensor':
                plt.gca().get_lines()[3].set_c(plt.gca().get_lines()[0].get_c())
                plt.gca().get_lines()[4].set_c(plt.gca().get_lines()[1].get_c())
                plt.gca().get_lines()[5].set_c(plt.gca().get_lines()[2].get_c())

        plt.xlabel("E-E$_f$ (eV)", fontsize=30)
        plt.ylabel("Seebeck effective mass", fontsize=30)
        plt.xticks(fontsize=25)
        plt.yticks(fontsize=25)
        if output == 'tensor':
            plt.legend([str(i) + '_' + str(T) + 'K' for T in temps for i in
                        ('x', 'y', 'z')], fontsize=20)
        elif output == 'average':
            plt.legend(fontsize=20)
        plt.tight_layout()
        return plt