Matlab - Guardar figura usando una GUI en matlab

 
Vista:
sin imagen de perfil

Guardar figura usando una GUI en matlab

Publicado por Hector (15 intervenciones) el 20/01/2014 19:17:07
Estimados,

tengo un problema al intentar guardar un gráfico en matlab usando una GUI. El comando de guardar me funciona bien, el problema es que me guarda toda la figura y no el gráfico que estoy representando. Es decir, al intentar guardarlo, me hace una foto de la figura como un todo, y lo que quiero realmente es guardar el gráfico. Adjunto mi código agradeciendo la ayuda que me podáis brindar.

Saludos cordiales

Héctor

============================== Aquí comienza el código ========================

function hp_plot

figure_color=[0.39 0.99 0.99];

hFigure= figure('Menubar','none',...
'Units','Pixels',...
'Color',figure_color,...
'Toolbar','none',...
'Name','plot',...
'NumberTitle','off',...
'Position',[1 500 480 283]);


hSave = uicontrol('Parent',hFigure,'Units',...
'normalized','Position',[0.90 0.30 0.12 0.28],...
'Style','pushbutton','String',' Save!',...
'FontSize',10,'Callback',@Save_Callback);

x = 0:0.05:3;
y = exp(-3/4.*(1./3.5.*x));

plot (x,y,'-bs','linewidth',1.4);
xlabel ('x label','FontName','Helvetica','FontSize', 16)
ylabel ('y label','FontName','Helvetica','FontSize', 16)
set(gca,'FontSize',18,'linewidth',1.5)
set(gcf,'color','w');
grid on

function Save_Callback(hObject,eventdata)

[a b] = uiputfile('*.jpg','Save as JPEG');
axesObject2=copyobj(gca,hFigure);
print(gcf,'-djpeg100',[b a]); % ==== Creo que el problema radica en esta liínea!!!!

end

end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Guardar figura usando una GUI en matlab

Publicado por Jorge De Los Santos (213 intervenciones) el 20/01/2014 23:29:46
Hola Hector...

Puedes probar creando un objeto "figure" auxiliar en donde copiarás sólo el contenido
del "axes"... te adjunto como quedaría con tal corrección... Saludos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function hp_plot
 
figure_color=[0.39 0.99 0.99];
 
hFigure= figure('Menubar','none',...
    'Units','Pixels',...
    'Color',figure_color,...
    'Toolbar','none',...
    'Name','plot',...
    'NumberTitle','off',...
    'Position',[200 300 480 283]);
 
 
hSave = uicontrol('Parent',hFigure,'Units',...
    'normalized','Position',[0.90 0.30 0.12 0.28],...
    'Style','pushbutton','String',' Save!',...
    'FontSize',10,'Callback',@Save_Callback);
 
x = 0:0.05:3;
y = exp(-3/4.*(1./3.5.*x));
 
haxes=gca;
plot (x,y,'-bs','linewidth',1.4);
xlabel ('x label','FontName','Helvetica','FontSize', 16)
ylabel ('y label','FontName','Helvetica','FontSize', 16)
set(gca,'FontSize',18,'linewidth',1.5)
set(gcf,'color','w');
grid on
 
    function Save_Callback(hObject,eventdata)
        [a b] = uiputfile('*.jpg','Save as JPEG');
        faux=figure('visible','off'); % Crea una figura auxiliar no visible
        copyobj(haxes,faux); % Copia solo el contenido del axes 
        print(gcf,'-djpeg100',[b a]);
        delete(faux); % Borra el objeto auxiliar
    end
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Guardar figura usando una GUI en matlab

Publicado por Hector (15 intervenciones) el 21/01/2014 09:52:09
Buenos días Jorge:

El código funciona de maravilla con las modificaciones que ha incluido. Muchísimas gracias por su ayuda y tiempo.

Un saludo

Héctor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar