Matlab - Añadir título o nombre a las líneas grafiadas.

   
Vista:

Añadir título o nombre a las líneas grafiadas.

Publicado por Carlos (60 intervenciones) el 24/05/2011 12:52:07
Hola a todos.
Me gustaría añadir el nombre a ciertas líneas grafiadas dentro del gráfinco NO en la leyenda.

Creo que leí por algún sitio que se puede hacer, pero no he conseguido volver a encontrarlo...

También me gustaría como puedo elegir que funciones (en mi caso rectas) quiero poner en la leyenda y cuales no.

con el comando legend('nombre', 'nombre2'...) lo que hago es ir poniendo nombre a todas las líneas que tengo ploteadas. Me gustaría poder dividirlas por colores, es decir, que la leyenda mostrara color verde (por ejemplo) y un nombre; color rojo otro nombre, etc.

Es todo esto posible? No se si es necesario que deje los datos de mi programa. Puede que con una simple explicación baste.

Si es necesario ya lo pondré.

Gracias!!
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 Dave

Añadir título o nombre a las líneas grafiadas.

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 24/05/2011 18:14:25
Hola Carlos;

No es muy clara tu consulta, pero entiendo que deseas usar de una manera especial los textos, colores y etiquetas de las legendas de las líneas que se muestran en un grafico. Bueno a todo esto te comento que en la documentación de Matlab, encontraras algunos ejemplos al respecto, entonces podrías revisar en la documentación referente al uso de plotmean

>> helpwin plotmean

Por otro lado, te copio los ejemplos que hago mención.

Espero, que sea de alguna ayuda.

Saludos
Dave
www.fismatlab.blogspot.com/

01.-
function annotation_property_line
dat = rand(50,1);
hLine = plot(dat);
plotMean % Nested function draws a line at mean value
set(get(get(hLine,'Annotation'),'LegendInformation'),...
'IconDisplayStyle','off'); % Exclude line from legend
legend('mean')
function plotMean
xlimits = get(gca,'XLim');
meanValue = mean(dat);
meanLine = line([xlimits(1) xlimits(2)],...
[meanValue meanValue],'Color','k','LineStyle','-.');
end
end


02.-
t = 0:.1:2*pi;
for k=1:5
offset = k/7;
m(:,k) = t+offset';
end
hSLines = plot(t,sin(m),'Color','b');hold on
hCLines = plot(t,cos(m),'Color','g');
hSGroup = hggroup;
hCGroup = hggroup;
set(hSLines,'Parent',hSGroup)
set(hCLines,'Parent',hCGroup)
% Include these hggroups in the legend:
set(get(get(hSGroup,'Annotation'),'LegendInformation'),...
'IconDisplayStyle','on');
set(get(get(hCGroup,'Annotation'),'LegendInformation'),...
'IconDisplayStyle','on');
legend('Sine','Cosine')

03.-

[X,Y] = meshgrid(-2:.1:2);
Z = X.*exp(-X.^2-Y.^2);
[mC hC] = contour(X,Y,Z);
set(get(get(hC,'Annotation'),'LegendInformation'),...
'IconDisplayStyle','Children');
%{
Assigns each line object's DisplayName property a string
based on the value of the contour interval it represents
%}
k =1; ind = 1; hLines = get(hC,'Children');
while k < size(mC,2),
set(hLines(ind),'DisplayName',num2str(mC(1,k)))
k = k+mC(2,k)+1; ind = ind+1;
end
% Display the legend using DisplayName labels
legend('show')


04.-

load mri
D = squeeze(D);
phandles = contourslice(D,[],[],[1,15,27],8);view(3)
gh(1) = hggroup; gh(2) = hggroup; gh(3) = hggroup;
%set(gh,'Parent',gca)
for k=1:length(phandles)
zd = get(phandles(k),'ZData');
plane = num2str(zd(1));
switch plane
case '1'
set(phandles(k),'Parent',gh(1),'EdgeColor','r')
case '15'
set(phandles(k),'Parent',gh(2),'EdgeColor','g')
case '27'
set(phandles(k),'Parent',gh(3),'EdgeColor','b')
otherwise
disp('Don''t know what to do with it')
end
end
hA = get(gh,'Annotation');
hLL = get([hA{:}],'LegendInformation');
set([hLL{:}],{'IconDisplayStyle'},...
{'on','on','on'}')
set(gh,{'DisplayName'},{'Level=1','Level=15','Level=27'}')
legend show
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

Añadir título o nombre a las líneas grafiadas.

Publicado por Carlos (60 intervenciones) el 27/05/2011 11:44:10
hola Dave gracias por contestar.

Lo que busco es justamente lo del segundo código, el de los senos y cosenos que los agrupa por color en la leyenda. He intentado adaptar el código a mi código pero no me desenvuelvo.

Serías capaz de explicarme el código? Es algo complejo y no acabo de entenderlo...

Si es necesario puedo poner mi código.

Gracias y 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

Añadir título o nombre a las líneas grafiadas.

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 01/06/2011 18:25:36
HOla Carlos.

%======================================================
clc
clear,clf
x=-2*pi:pi/30:2*pi; %genera un vector x dsd -2pi hasta 2pi con incremento pi/30
f=length(x); % en f se guarda el tamaño del vector x
c=6; % c: numero de curvas a graficar de una misma funcion
y=zeros(f,c); % la funcion zeros crea Y una matriz de f filas por c columnas
d=0.15; % d: distancia entre curva y curva
for i=1:c
y(:,i)=x+d*i; % y(:,i): en la columna i de matriz y guardo el valor de x+0.5d
end
figure(gcf) % para que la grafica salga en primer plano

%PARA LA FUNCION SENO
%===============================================
graficassenos=plot(x,5*sin(y),'b');
gruposeno=hggroup;
set(graficassenos,'Parent',gruposeno)
set(get(get(gruposeno,'Annotation'),'LegendInformation'),'IconDisplayStyle','on');
%====================================================

hold on % para poder graficar en una misma ventana varias curvas

%PARA LA FUNCION COSENO
%=================================================
graficascosenos= plot(x,5*cos(y),'g');
grupocoseno=hggroup;
set(graficascosenos,'Parent',grupocoseno)
set(get(get(grupocoseno,'Annotation'),'LegendInformation'),'IconDisplayStyle','on');
%============================================================================

%PARA LA FUNCION TANGENTE
%==========================================================
graficasrectas= plot(x,y,'r');
gruporecta=hggroup;
set(graficasrectas,'Parent',gruporecta)
set(get(get(gruporecta,'Annotation'),'LegendInformation'),'IconDisplayStyle','on');
%===========================================================================

%PARA LA FUNCION ABSOLUTO
%==========================================================
graficasabsolutos= plot(x,abs(y),'m');
grupoabsoluto=hggroup;
set(graficasabsolutos,'Parent',grupoabsoluto)
set(get(get(grupoabsoluto,'Annotation'),'LegendInformation'),'IconDisplayStyle','on');
%===========================================================================


legend('5*Seno','5*Coseno','recta y=x','absoluto')
grid

%===========================================================


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