def plot_T_dependent_property(self, Tmin=None, Tmax=None, methods=[],
                                  pts=50, only_valid=True, order=0):  # pragma: no cover
        r'''Method to create a plot of the property vs temperature according to
        either a specified list of methods, or user methods (if set), or all
        methods. User-selectable number of points, and temperature range. If
        only_valid is set,`test_method_validity` will be used to check if each
        temperature in the specified range is valid, and
        `test_property_validity` will be used to test the answer, and the
        method is allowed to fail; only the valid points will be plotted.
        Otherwise, the result will be calculated and displayed as-is. This will
        not suceed if the method fails.

        Parameters
        ----------
        Tmin : float
            Minimum temperature, to begin calculating the property, [K]
        Tmax : float
            Maximum temperature, to stop calculating the property, [K]
        methods : list, optional
            List of methods to consider
        pts : int, optional
            A list of points to calculate the property at; if Tmin to Tmax
            covers a wide range of method validities, only a few points may end
            up calculated for a given method so this may need to be large
        only_valid : bool
            If True, only plot successful methods and calculated properties,
            and handle errors; if False, attempt calculation without any
            checking and use methods outside their bounds
        '''
        # This function cannot be tested
        if not has_matplotlib:
            raise Exception('Optional dependency matplotlib is required for plotting')
        if Tmin is None:
            if self.Tmin is not None:
                Tmin = self.Tmin
            else:
                raise Exception('Minimum temperature could not be auto-detected; please provide it')
        if Tmax is None:
            if self.Tmax is not None:
                Tmax = self.Tmax
            else:
                raise Exception('Maximum temperature could not be auto-detected; please provide it')

        if not methods:
            if self.user_methods:
                methods = self.user_methods
            else:
                methods = self.all_methods
        Ts = np.linspace(Tmin, Tmax, pts)
        if order == 0:
            for method in methods:
                if only_valid:
                    properties, Ts2 = [], []
                    for T in Ts:
                        if self.test_method_validity(T, method):
                            try:
                                p = self.calculate(T=T, method=method)
                                if self.test_property_validity(p):
                                    properties.append(p)
                                    Ts2.append(T)
                            except:
                                pass
                    plt.semilogy(Ts2, properties, label=method)
                else:
                    properties = [self.calculate(T=T, method=method) for T in Ts]
                    plt.semilogy(Ts, properties, label=method)
            plt.ylabel(self.name + ', ' + self.units)
            plt.title(self.name + ' of ' + self.CASRN)
        elif order > 0:
            for method in methods:
                if only_valid:
                    properties, Ts2 = [], []
                    for T in Ts:
                        if self.test_method_validity(T, method):
                            try:
                                p = self.calculate_derivative(T=T, method=method, order=order)
                                properties.append(p)
                                Ts2.append(T)
                            except:
                                pass
                    plt.semilogy(Ts2, properties, label=method)
                else:
                    properties = [self.calculate_derivative(T=T, method=method, order=order) for T in Ts]
                    plt.semilogy(Ts, properties, label=method)
            plt.ylabel(self.name + ', ' + self.units + '/K^%d derivative of order %d' % (order, order))
            plt.title(self.name + ' derivative of order %d' % order + ' of ' + self.CASRN)
        plt.legend(loc='best')
        plt.xlabel('Temperature, K')
        plt.show()
def plot_T_dependent_property ( self , Tmin = None , Tmax = None , methods = [ ] , pts = 50 , only_valid = True , order = 0 ) : if not has_matplotlib : raise Exception ( 'Optional dependency matplotlib is required for plotting' ) if Tmin is None : if self . Tmin is not None : Tmin = self . Tmin else : raise Exception ( 'Minimum temperature could not be auto-detected; please provide it' ) if Tmax is None : if self . Tmax is not None : Tmax = self . Tmax else : raise Exception ( 'Maximum temperature could not be auto-detected; please provide it' ) if not methods : if self . user_methods : methods = self . user_methods else : methods = self . all_methods Ts = np . linspace ( Tmin , Tmax , pts ) if order == 0 : for method in methods : if only_valid : properties , Ts2 = [ ] , [ ] for T in Ts : if self . test_method_validity ( T , method ) : try : p = self . calculate ( T = T , method = method ) if self . test_property_validity ( p ) : properties . append ( p ) Ts2 . append ( T ) except : pass plt . semilogy ( Ts2 , properties , label = method ) else : properties = [ self . calculate ( T = T , method = method ) for T in Ts ] plt . semilogy ( Ts , properties , label = method ) plt . ylabel ( self . name + ', ' + self . units ) plt . title ( self . name + ' of ' + self . CASRN ) elif order > 0 : for method in methods : if only_valid : properties , Ts2 = [ ] , [ ] for T in Ts : if self . test_method_validity ( T , method ) : try : p = self . calculate_derivative ( T = T , method = method , order = order ) properties . append ( p ) Ts2 . append ( T ) except : pass plt . semilogy ( Ts2 , properties , label = method ) else : properties = [ self . calculate_derivative ( T = T , method = method , order = order ) for T in Ts ] plt . semilogy ( Ts , properties , label = method ) plt . ylabel ( self . name + ', ' + self . units + '/K^%d derivative of order %d' % ( order , order ) ) plt . title ( self . name + ' derivative of order %d' % order + ' of ' + self . CASRN ) plt . legend ( loc = 'best' ) plt . xlabel ( 'Temperature, K' ) plt . show ( )
r'''Method to create a plot of the property vs temperature according to
        either a specified list of methods, or user methods (if set), or all
        methods. User-selectable number of points, and temperature range. If
        only_valid is set,`test_method_validity` will be used to check if each
        temperature in the specified range is valid, and
        `test_property_validity` will be used to test the answer, and the
        method is allowed to fail; only the valid points will be plotted.
        Otherwise, the result will be calculated and displayed as-is. This will
        not suceed if the method fails.

        Parameters
        ----------
        Tmin : float
            Minimum temperature, to begin calculating the property, [K]
        Tmax : float
            Maximum temperature, to stop calculating the property, [K]
        methods : list, optional
            List of methods to consider
        pts : int, optional
            A list of points to calculate the property at; if Tmin to Tmax
            covers a wide range of method validities, only a few points may end
            up calculated for a given method so this may need to be large
        only_valid : bool
            If True, only plot successful methods and calculated properties,
            and handle errors; if False, attempt calculation without any
            checking and use methods outside their bounds