Matlab - Eje X en la parte superior

 
Vista:
sin imagen de perfil

Eje X en la parte superior

Publicado por Manuel Blesa Cabez (7 intervenciones) el 04/08/2014 16:53:09
Hola a todos,

Tengo una duda: tengo una imagen y me gustaria poner el eje X en la parte superior de la imagen, pero sin que se meta dentro de la imagen.

Saludos,

Manuel Blesa
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eje X en la parte superior

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 04/08/2014 18:05:59
1
hold(axes('Parent',figure,'XAxisLocation','top'));



Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
[email protected]
Estimado Usuario de Matlab, el correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

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

Eje X en la parte superior

Publicado por Manuel Blesa Cabez (7 intervenciones) el 05/08/2014 13:43:39
Hola Jose,

Gracias por tu ayuda. Lo he intentado pero no consigo ponerlo, te pongo mi codigo a ver si sabes exactamente donde ponerlo.

1
2
3
4
5
6
7
8
9
10
11
12
conmat = csvread('CSVmat.csv', 1, 0) ;
CSVmat = 'CSVmat.csv';
fid = fopen(CSVmat);
conmat_header = strsplit(fgetl(fid),',');
fclose(fid);
 
% Display connectivity matrix 
figure, imagesc(conmat)
set(gca,'Xtick',1:size(conmat,1),'YTick',1:size(conmat,1),'XTickLabel',conmat_header,'YTickLabel',conmat_header);
rot=90;
rotateticklabel(gca,rot);
colorbar;

y la funcion rotateticklabel:

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
function th=rotateticklabel(h,rot,demo)
 
if nargin==3
    x=[now-.7 now-.3 now];
    y=[20 35 15];
    figure
    plot(x,y,'.-')
    datetick('x',0,'keepticks')
    h=gca;
    set(h,'position',[0.13 0.35 0.775 0.55]);
    rot=90;
end
 
%set the default rotation if user doesn't specify
if nargin==1
    rot=90;
end
%make sure the rotation is in the range 0:360 (brute force method)
while rot>360
    rot=rot-360;
end
while rot<0
    rot=rot+360;
end
%get current tick labels
a=get(h,'XTickLabel');
%erase current tick labels from figure
set(h,'XTickLabel',[]);
%get tick label positions
b=get(h,'XTick');
%d=set(h,'XAxisLocation','top');
c=get(h,'YTick');
%make new tick labels
if rot<180
    th=text(b,repmat(c(end)-.1*(c(end-1)-c(end)),length(b),1),a,'HorizontalAlignment','right','rotation',rot);
else
    th=text(b,repmat(c(end)-.1*(c(end-1)-c(end)),length(b),1),a,'HorizontalAlignment','left','rotation',rot);
end

Gracias de antemano,

Saludos,

Manuel Blesa
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eje X en la parte superior

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 05/08/2014 14:34:31
En tu código que haz puesto tu para poder ejecutar tu lees el archivo 'CSVmat.csv' con la función cvsread().
Cualquier persona que te desea ayudarte no lo podría hacer en forma acertada pues ese archivo de data no haz puesto en el foro. Te pueden dar sugerencias o quizás no te den sugerencias, muchas veces sugerencias no son las precisas y pasa el tiempo y tu pregunta queda sin contestar. La idea que el usuario que hace sus preguntas pongan los datos necesarios para poder ejecutar o filtrar de esa manera sus código.

Yo leo las preguntas del foro de los usuarios que Matlab hay presencias sencillas u otras complicadas, pero hacerlo cada uno desde cero implica tiempo. Si los usuarios que hacen las preguntas pusieran sus avances y sus datas correspondientes entonces su preguntas podrían ser contestadas.
A mi parecer muchos usuario no lo hacen pues


Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
[email protected]
Estimado Usuario de Matlab, el correo es para servicios de programación, toda ayuda gratuita es vía foro.


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
sin imagen de perfil

Eje X en la parte superior

Publicado por Manuel Blesa Cabez (7 intervenciones) el 05/08/2014 14:42:47
Hola,

Lo siento pero no me funciona, no se donde ponerlo para que este bien. No entiendo que quieres decir con falta 'CSVmat.csv'. Gracias de antemano

Saludos,

Manuel Blesa
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eje X en la parte superior

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 05/08/2014 15:00:23
En tu código que haz puesto tu para poder ejecutar tu lees el archivo 'CSVmat.csv' con la función cvsread().
Cualquier persona que te desea ayudarte no lo podría hacer en forma acertada pues ese archivo de data no haz puesto en el foro. Te pueden dar sugerencias o quizás no te den sugerencias, muchas veces las sugerencias no son las mas precisas y pasa el tiempo y tu pregunta queda sin contestar. La idea que el usuario que hace sus preguntas pongan los datos necesarios para poder ejecutar y filtrar sus código y esa ver los errores .

Yo leo las preguntas del foro de los usuarios que Matlab hay preguntas sencillas u otras complicadas, pero hacerlo cada uno desde cero implica tiempo. Si los usuarios que hacen las preguntas pusieran sus avances y sus datas correspondientes entonces su preguntas podrían ser contestadas en menos tiempo.
A mi parecer muchos usuario no lo hacen pues desean proteger sus programas que están haciendo y están en su derecho, entonces como uno podría ayudarlo. El foro es un lugar publico donde uno comparte sus conocimientos.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
[email protected]
Estimado Usuario de Matlab, el correo es para servicios de programación, toda ayuda gratuita es vía foro.


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
sin imagen de perfil

Eje X en la parte superior

Publicado por Manuel (7 intervenciones) el 05/08/2014 15:22:22
Hola,

Incluyo todos los datos y los programas. Si ejecuto el programa como esta escrito:

1
2
3
4
5
6
7
8
9
10
11
12
conmat = csvread('CSVmat.csv', 1, 0) ;
CSVmat = 'CSVmat.csv';
fid = fopen(CSVmat);
conmat_header = strsplit(fgetl(fid),',');
fclose(fid);
 
% Display connectivity matrix
figure, imagesc(conmat)
set(gca,'Xtick',1:size(conmat,1),'YTick',1:size(conmat,1),'XTickLabel',conmat_header,'YTickLabel',conmat_header);
rot=90;
rotateticklabel(gca,rot);
colorbar;

y la funcion rotateticklabel:

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
function th=rotateticklabel(h,rot,demo)
 
if nargin==3
x=[now-.7 now-.3 now];
y=[20 35 15];
figure
plot(x,y,'.-')
datetick('x',0,'keepticks')
h=gca;
set(h,'position',[0.13 0.35 0.775 0.55]);
rot=90;
end
 
%set the default rotation if user doesn't specify
if nargin==1
rot=90;
end
%make sure the rotation is in the range 0:360 (brute force method)
while rot>360
rot=rot-360;
end
while rot<0
rot=rot+360;
end
%get current tick labels
a=get(h,'XTickLabel');
%erase current tick labels from figure
set(h,'XTickLabel',[]);
%get tick label positions
b=get(h,'XTick');
%d=set(h,'XAxisLocation','top');
c=get(h,'YTick');
%make new tick labels
if rot<180
th=text(b,repmat(c(end)-.1*(c(end-1)-c(end)),length(b),1),a,'HorizontalAlignment','right','rotation',rot);
else
th=text(b,repmat(c(end)-.1*(c(end-1)-c(end)),length(b),1),a,'HorizontalAlignment','left','rotation',rot);
end

Obtengo la figura llamada martix.jpg

Si pongo set(gca,'YDir','normal') josto detras de colorbar, obtengo la figura matrix2.jpg

Lo que me gustaria es que el eje X este arriba pero sin meterse dentro de la figura y sin canviar el orden de los nombres. Muchas gracias por tu ayuda

Saludos,

Manuel Blesa
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