Matlab

Exportar figuras de App Designer en Matlab

Cuando queremos exportar guardar en un archivo las figuras que hemos creado en Matlab disponemos de la función saveas(). Aunque desafortunadamente esa no funciona cuando en ejes ubicados dentro de aplicaciones de App Designer. Ni tampoco en el caso de Guide. En estas situaciones, para poder exportar figuras de App Designer es necesario copiar el contenido de los ejes en una figura oculta e imprimir esta. Veamos a continuación cómo se puede hacer esta tarea de una forma fácil.

La función saveas()

En Matlab la función saveas() nos permite exportar el contenido de una figura a un archivo. Siendo necesario indicar un primer parámetro con la figura que se desea exportar y un segundo con el nombre del archivo.

El problema está cuando deseamos exportar el contenido un eje en una aplicación creada en App Designer. En este caso si se indica en primer lugar el eje (por ejemplo, app.UIAxes) lo que nos devuelve la función es el siguiente error.

Error in saveas (line 181)
        print( h, name, ['-d' dev{i}] )

La solución a este problema pasa por volver a crear la gráfica en una figura y exportar esta. Aunque puede ser más fácil copiar el contenido de la figura.

Función para exportar figuras de App Designer

El problema se puede solucionar con la siguiente función.

function exportFigure(ax, filename)

if nargin == 1
    [filename, path] = uiputfile({ ...
        '*.jpeg', 'JPEG files (*.jpeg)'; ...
        '*.png',  'Portable Network Graphics files (*.png)'; ...
        '*.tiff', 'TIFF image files (*.tiff)'; ...
        '*.bmp',  'BMP files (*.bmp)'}, ...
        'Select a file to export');
    
    if filename == 0
        return;
    else
        filename = fullfile(path, filename);
    end
end

   
% Creación de una figura invisible
fig = figure;
fig.Visible = 'off';
figAxes = axes(fig);

% Copia de los ejes y objetos hijos en la figura
copyobj(ax.XAxis.Parent.Children, figAxes)
figAxes.XLim = ax.XLim;
figAxes.YLim = ax.YLim;
figAxes.ZLim = ax.ZLim;
figAxes.DataAspectRatio = ax.DataAspectRatio;

% Guardado de la figura en el archivo
saveas(fig, filename);

% Borrado de la figura temporal
delete(fig);

end

Esta función tiene dos parámetros: la referencia al objeto UIAxes y el nombre de un archivo. El primer parámetro es obligatorio, pero no el segundo, si no se introduce aparecerá un asistente para pedir el nombre del archivo y la ubicación. Para lo que se utiliza la función uiputfile(). Si no se selecciona ningún archivo en programa termina.

A continuación, viene la parte interesante del programa. En la que se crea una nueva figura oculta y se obtienen sus ejes. Posteriormente se copia todo el contenido del eje original en el de la figura y las opciones de representación. En este momento, tendríamos una copia exacta de la gráfica de la aplicación en la figura externa. Por lo que se puede guardar en el archivo.

Ahora es necesario destruir la figura temporal que se ha creado. Ya que de otro modo quedaría ocupando un espacio innecesario en memoria.

Conclusiones

En esta esta entrada se ha visto cómo solucionar un problema en nuestras aplicaciones de App Designer: la posibilidad de exportar directamente las figuras. Una función con la que se puede mejorar fácilmente las aplicaciones, especialmente aquellas que diseñamos para procesar datos que luego se deben incluir en informes.

Imagen de Elias Sch. en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Analytics Lane lanza ScoreFlow, un SaaS para construir y desplegar scorecards de crédito

En Analytics Lane seguimos evolucionando nuestras herramientas y damos un paso más con el lanzamiento…

3 días ago

DBSCAN y la selección de ε: teoría, intuición y aplicación práctica

Cuando hablamos de clustering, lo primero que viene a la mente suele ser k-means. Pero…

4 días ago

El bestiario de los indicadores económicos absurdos: El zoo patrio

Cualquier país desarrollado tiene sus propios indicadores folclóricos. España, por motivos que tienen mucho que…

1 semana ago

Por qué el banco te ofrece un 3% TAE y no es lo que parece

Entras a la web de tu banco. En la página principal, un banner llamativo: “Depósito…

2 semanas ago

Analytics Lane lanza la versión 1.3 del laboratorio con nuevas herramientas de evaluación de modelos y utilidades prácticas

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.3, disponible…

2 semanas ago

This website uses cookies.