Matlab - problema con legend en graficas

   
Vista:

problema con legend en graficas

Publicado por Luis (10 intervenciones) el 12/03/2013 11:06:15
Hola, estoy haciendo un programa en GUIDE en matlab. Lo que quiero hacer es preguntarle al usuario cuantas gráficas quiere representar en una misma gráfica. En función de ello, le voy preguntando al usuario en qué color quiere representar esa gráfica y voy cargando los valores de los ejes de abcisas y de ordenadas en vectores, ya que están almacenados en archivos.
También le pregunto al usuario el identificador de la gráfica que quiero meter en legend.
El problema que tengo es que cada vez que hago un legend me lo pone encima del otro, es decir sólo se ve el identificador de la última gráfica.

Este es el código que he hecho:
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
function comparativa_graficas_Callback(hObject, eventdata, handles)
% hObject    handle to media (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
numerodegraficas=inputdlg('¿cuantas gráficas desea comparar:?');
 
    maxgraficas=str2num(cell2mat(numerodegraficas)); %maxgraficas es el numero de graficas a comparar de tipo number
    for(i=1:maxgraficas)
        tensiones={'Introduzca el nombre del archivo donde están almacenados las tensiones:'}; %eje vertical
        nombre1=inputdlg(tensiones);
        fid1=fopen([cell2mat(nombre1),'.txt'],'r');
        v=fscanf(fid1,'%f \b')';
        fclose(fid1);
        tiempos={'Introduzca el nombre del archivo donde tiene guardado el eje de tiempos:'}; %eje horizontal
        nombre2=inputdlg(tiempos);
        fid2=fopen([cell2mat(nombre2),'.txt'],'r');
        t=fscanf(fid1,'%f \b')';
        fclose(fid2),
        color={'Introduzca el color con el que quiere representar la gráfica: r,b,g,c,m,y,b?'};
        c=inputdlg(color);
        duty={'Introduzca el duty cycle de la prueba:'}; %este es el identificador que quiero poner con legend
        dc=inputdlg(duty);
        axes(handles.axes3);
        plot(t, v, cell2mat(c));
        xlabel('Tiempo(seg)');
        ylabel('Tensión(v)');
        engrafica=strcat('Duty cycle: ',cell2mat(dc));
        legend(engrafica);
        hold on;
    end


El problema es que el identificador de la gráfica me lo pisa y sólo queda el de la última cuando lo que yo quiero es que aparezca cada identificador con su respectivo color.

Gracias y un saludo.
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 JOSÉ JEREMÍAS  CABALLERO

problema con legend en graficas

Publicado por JOSÉ JEREMÍAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 12/03/2013 16:16:10
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
Imágen de perfil de JOSÉ JEREMÍAS CABALLERO

problema con legend en graficas

Publicado por JOSÉ JEREMÍAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 12/03/2013 17:01:40
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function varargout = comparativa_graficas_caballero(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @comparativa_graficas_caballero_OpeningFcn, ...
                   'gui_OutputFcn',  @comparativa_graficas_caballero_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
 
function comparativa_graficas_caballero_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
 
function varargout = comparativa_graficas_caballero_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
 
function comparativa_graficas_Callback(hObject, eventdata, handles)
numerodegraficas=inputdlg('¿cuantas gráficas desea comparar:?');
if isequal(cell2mat(numerodegraficas),0)
     return;
else
    maxgraficas=str2double(cell2mat(numerodegraficas)); %maxgraficas es el numero de graficas a comparar de tipo number
     hold on;
    for i=1:maxgraficas
    %         tensiones={'Introduzca el nombre del archivo donde están almacenados las tensiones:'}; %eje vertical
    %         nombre1=inputdlg(tensiones);
    %         fid1=fopen([cell2mat(nombre1),'.txt'],'r');
    %         v=fscanf(fid1,'%f \b')';
    %         fclose(fid1);
    %         tiempos={'Introduzca el nombre del archivo donde tiene guardado el eje de tiempos:'}; %eje horizontal
    %         nombre2=inputdlg(tiempos);
    %         fid2=fopen([cell2mat(nombre2),'.txt'],'r');
    %         t=fscanf(fid1,'%f \b')';
    %         fclose(fid2),
             t=sort(round(5*rand(1,10)));
             v=6*rand(1,10);
            color={'Introduzca el color con el que quiere representar la gráfica: r,b,g,c,m,y,b?'};
            c=inputdlg(color);
            duty={'Introduzca el duty cycle de la prueba:'}; %este es el identificador que quiero poner con legend
            dc=inputdlg(duty);
            axes(handles.axes1);
            plot(t, v, cell2mat(c));
            xlabel('Tiempo(seg)');
            ylabel('Tensión(v)');
            engrafica{i}=strcat('Duty cycle: ',cell2mat(dc));
            legend(engrafica);
    end
end



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

problema con legend en graficas

Publicado por Luis (10 intervenciones) el 15/03/2013 09:27:30
Muchísimas gracias Jose Jeremías de verdad.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

problema con legend en graficas

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 16/03/2013 01:16:31
De nada Luis.
Había una pregunta resuelto sobre lo que querías hacer, en el foro.
http://www.lawebdelprogramador.com/foros/Matlab/1320477-Poner_caracteristicas_aleatorias_en_graficas_de_matlab.html



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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