[pyar] Refactoring de una función

Luis Andraschnik luis.andraschnik en gmail.com
Lun Jul 9 12:50:56 -03 2018


Hola gente!

Tengo esta función que toma como argumentos una lista de archivos de
espectros y grafica según los valores de los parámetros en un archivo único
(superpuestos) o separados en archivos individuales. A fin de no repetir
código lo hago en una única función y sólo cambia el final. El cambio es
muy sutil, la posición del if define si se cierra el plot y se guarda el
arhchivo. y sólo cambia qué nombre le asigno a/los archivo/s. Me parece que
falta claridad, un error de indentado me cambia el resultado.

Cómo de puede refactorizar para que quede más claro?
Se puede utilizar el patrón de diseño Template? Cómo?

Saludos

import os
import matplotlib.pyplot as plt
INIT_DIR=os.getcwd()


def ftir_plot(used_oil_name_list, formato='png', absorbancia=True,
superpuestos=True, dpi=300):
    '''Grafica espectros infrarrojos
    formato : 'png','jpg', 'pdf', etc
    absorbancia : True, eje Y absorbancia, False, eje Y transmitancia,
    superpuestos: True, se grafica todo en un mismo archivo,
        False, cada espectro en un archivo separado,
    dpi: resolución en pixels por pulgada.
    '''
    mpl_fig = plt.figure()
    ax = mpl_fig.add_subplot(111)
    for used_oil in used_oil_name_list:
        espectro = cargar_espectro(used_oil)
        x_range = espectro.index # Wavenumbers
        if absorbancia:
            y_range = espectro['abs'] # Absorbancia/Transmitancia
        else:
            y_range = absorbancia_to_transmitancia(espectro['abs'])

        # grafico el espectro
        estilo(absorbancia)
        label = name_for_legend(used_oil)
        plt.plot(x_range, y_range, '-', label = label)
        plt.legend(loc=0)
        if not superpuestos:
            plt.savefig(os.path.join(INIT_DIR, 'ftir_{}.{}'.format(label,
formato)), dpi=dpi)
            plt.close()

    if superpuestos:
        plt.savefig(os.path.join(INIT_DIR,'ftir_.{}'.format(formato)),
dpi=dpi)
        plt.close()
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180709/5dd1e582/attachment.html>


Más información sobre la lista de distribución pyar