Matlab - Plot en axes GUI

   
Vista:

Plot en axes GUI

Publicado por Daniel (32 intervenciones) el 14/12/2011 12:46:53
Hola amig@s del foro,

Espero que podáis ayudarme porque estoy desperado para la realización del siguiente ejercicio;

A partir de los datos introducidos en una tabla necesito dibujar un diagrama de barras y que aparezca en un axes contenido en un GUI.

Y la verdad que no me sale!!!!!!

vi = Datos(:,2);
fi = Datos(:,3);
bar (handles.axes1,vi,fi);
title('Diagrama de barras');
xlabel('Velocidad del viento');
ylabel('Horas/año');

No muestra nada!!!!! ni me da error en la ventana de comando!!

Espero que podáis ayudarme, es para mi Proyecto de Fin de Carrera.

Gracias y saludos.
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 JOSE JEREMIAS CABALLERO

Plot en axes GUI

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 14/12/2011 14:26:20
Hola Daniel.
El problema esta, es que tu das muy poco informacion en tus preguntas.
y por eso casi siempre no te contestan.
UNo hay veces tiene que ser un poco adivino para poder reconstruir lo q estas haciendo, pero no siempre se reconstruye tal como Tú quieres, y por eso cuando te contesto, me parece que te quedas descontento, no me dices si esta bien o esta mal lo que te contesto. Ademas reconstruir lo que estas preguntando implica tiempo. Por eso hay veces me demoro en contestarte y en ocaciones no te llego a contestar. Sinceramente hay pocas persona en el foro, que se dan un tiempo para leer las preguntas y poder construir las soluciones, pues eso implica tiempo.
Tu habras visto en el foro, que yo no soy de las personas que se limita a dar sugerencias, a mi gusta hacer programas, listos para ser ejecutados y que te un resultado.
Es por esa razon que necesito toda la informacion posible de las persona que estan preguntando, hacerca de una pregunta del foro del matlab
A me gustaria ayudarte, asi como a todos del foro que se le ayuda, pero por la forma que preguntas es dificil ayudarte.
Bueno copia todo el codigo de esta parte de tu codigo al foro, o sino enviame a mi correo, para verlo y poder filtrarte el codigo. Pero dame tiempo, no me pidas al tal toque la respuesta. Estoy en pleno proceso de examenes en la univ y tengo que calificar los examenes.

Ahora si desconfias de mi persona, no lo hagas, no envies tu codigo a mi correo. Porque ya he tenido mala experiencia, por pedir q me envien sus codigos a mi correo, para poder ayudarlos.

en tu pregunta, los vacios son: Datos?.

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
PROGRAMADOR EN MATLAB
jjcc94@hotmail.com
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

Plot en axes GUI

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 14/12/2011 14:45:09
Hola Daniel.
Aqui tienes un codigo. Nose, si quieres algo asi.
Pero contesta!!, para saber si lo que te conesto es lo correcto, o falta agregar algo. Varias veces te contestado pero no me haz contestado nada.

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
58
59
function varargout = plot_axis_guide(varargin)
%Plot en axes GUI
% Hola amig@s del foro,
% 
% Espero que podáis ayudarme porque estoy desperado para la realización del
%siguiente ejercicio;
% 
% A partir de los datos introducidos en una tabla necesito dibujar un 
%diagrama de barras y que aparezca en un axes contenido en un GUI.
% 
% Y la verdad que no me sale!!!!!!
% 
% vi = Datos(:,2);
% fi = Datos(:,3);
% bar (handles.axes1,vi,fi);
% title('Diagrama de barras');
% xlabel('Velocidad del viento');
% ylabel('Horas/año');
% 
% No muestra nada!!!!! ni me da error en la ventana de comando!!
% 
% Espero que podáis ayudarme, es para mi Proyecto de Fin de Carrera.
% 
% Gracias y saludos.
 
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @plot_axis_guide_OpeningFcn, ...
                   'gui_OutputFcn',  @plot_axis_guide_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 plot_axis_guide_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
 
function varargout = plot_axis_guide_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
 
function graficar_Callback(hObject, eventdata, handles)
x=linspace(-2*pi,2*pi);
y=sin(x);
axes(handles.axes1);
plot(x,y)
 
axes(handles.axes2);
bar(x,y)
title('Diagrama de barras');
xlabel('Velocidad del viento');
ylabel('Horas/año');



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
PROGRAMADOR EN MATLAB
jjcc94@hotmail.com
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

Plot en axes GUI

Publicado por Daniel (32 intervenciones) el 14/12/2011 19:01:55
Hola Jeremías,

Ante todo darle las gracias por dedicarme su tiempo para poder contestarme en el foro. Pedirle disculpas por no saber explicarme con claridad, no es fácil describir con palabras las cosas que uno tiene que hacer. Le envio a su correo toda la información necesaria del proyecto.

Gracias y un saludo.

Daniel
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

Plot en axes GUI

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 19/12/2011 08:24:48
hola Daniel.
Te acabo de enviar el codigo a tu correo. Tal como quieres.


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
PROGRAMADOR EN MATLAB
jjcc94@hotmail.com
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

Plot en axes GUI

Publicado por Daniel (32 intervenciones) el 19/12/2011 21:09:47
Hola Jeremías,


Acabo de abrir el correo, en breve pruebo el código y le comento.

Gracias por su tiempo.

Un saludo
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

Plot en axes GUI

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 19/12/2011 21:49:36
hola Daniel.

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
function varargout = tablacaballero7(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @tablacaballero7_OpeningFcn, ...
                   'gui_OutputFcn',  @tablacaballero7_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 tablacaballero7_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.axes1;
plot(0,0)
guidata(hObject, handles);
 
function varargout = tablacaballero7_OutputFcn(hObject, eventdata, handles)
set(handles.uitable1,'visible','off');
varargout{1} = handles.output;
 
function leer_tabla_Callback(hObject, eventdata, handles)
[nombre ruta]=uigetfile('*.mat','ABRIR ARCHIVOS');
if nombre==0
    return;
else
    t=load([ruta nombre]);
    set(handles.uitable1,'visible','on');
    set(handles.uitable1,'Data',t.Datos);
    handles.datos=t.Datos;
 
end
guidata(hObject, handles);
 
function Dibujar_grafica_Callback(hObject, eventdata, handles)
Datos=handles.datos;
vi1 = (Datos(:,1)+Datos(:,2))/2;%Marca de clase
fi1 = Datos(:,2);
hist(handles.axes1,vi1,fi1);
hold on
vi2=(Datos(:,1)+Datos(:,2))/2;%Marca de clase, (EJE X)
fi2=Datos(:,5);
plot(handles.axes1,vi2,fi2,'r');
hold off
legend('Diagrama de Barras','Curva')
title('Diagrama de barras');
xlabel('Velocidad del viento');
ylabel('Horas/año');
 
handles.vi1=vi1;  handles.fi1=fi1;
handles.vi2=vi2;  handles.fi2=fi2;
guidata(hObject, handles);
 
function Reset_todo_Callback(hObject, eventdata, handles)
%Resetear uipanel y gráfica
set(handles.uitable1, 'data', []);
plot(0,0)
 
function guardar_Callback(hObject, eventdata, handles)
vi1=handles.vi1;  fi1=handles.fi1;
vi2=handles.vi2;  fi2=handles.fi2;
%Guardar uipanel y gráfica
[filename,pathname]=uiputfile({'*'},'Guardar nombre de arhivo');
if filename==0
    return;
else
   %assignin('base','jose',get(handles.uitable1,'Data'))
   save([pathname filename]);
   t=load([pathname filename]);
   Datos=t.handles.datos;
   save([pathname filename],'Datos');
   fid=fopen([pathname [filename,'.txt']],'w');
   fprintf(fid,'%3d %3d %5d %5d %9.5f %9.5f \n',Datos');
   fclose(fid);
   
 f=figure;
 handles.axes1;
 hist(vi1,fi1);
 hold on
 plot(vi2,fi2,'r')
 saveas(f,[pathname,[filename,'.jpg']]);
 hold off
 close Figure 1
end

function uitable1_CellEditCallback(hObject, eventdata, handles)
eventdata.NewData


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
PROGRAMADOR EN MATLAB
jjcc94@hotmail.com
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

Plot en axes GUI

Publicado por Daniel (32 intervenciones) el 19/12/2011 22:53:42
Hola Jeremías,

He probado la secuencia y me produce el siguiente error:

[i]??? Error using ==> histc
Edges vector must be monotonically non-decreasing.

Error in ==> hist at 92
nn = histc(y,edges,1);

Error in ==> Plot>pushbutton2_Callback at 101
hist(handles.axes1,vi1,fi1);

Error in ==> gui_mainfcn at 96
feval(varargin{:});

Error in ==> Plot at 42
gui_mainfcn(gui_State, varargin{:});

Error in ==>
@(hObject,eventdata)Plot('pushbutton2_Callback',hObject,eventdata,guidata(hObject))


??? Error while evaluating uicontrol Callback


En el botón 2 (Dibujar_grafica) HE CAMBIADO fi1 = Datos(:,2); POR UN 3, DADO QUE LO QUE ME INTERESA ES DICHA COLUMNA, POR ESTA RAZÓN ME PRODUCE EL FALLO.

NO ENTIENDO EL POR QUÉ? LOS VALORE DE DICHA COLUMNA HAN DE ESTAR ORDENADOS DE MAYOR A MENOR?

GRACIAS
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

Plot en axes GUI

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 19/12/2011 23:02:18
hola Daniel.
El problema esta en el uso de histograma.
los elemenentos de vector debe de estar en forma creciente para q puedas aplicar el histograma.
y tu tercera columna no cumple esta condicion.


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
PROGRAMADOR EN MATLAB
jjcc94@hotmail.com
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

Plot en axes GUI

Publicado por Daniel (32 intervenciones) el 19/12/2011 23:07:16
Con el comando bar() puedo realizar dicha gráfica?
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

Plot en axes GUI

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 19/12/2011 23:11:02
Conectate via chat.
Estoy en linea

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
PROGRAMADOR EN MATLAB
jjcc94@hotmail.com
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