Matlab - Poner características aleatorias en graficas de matlab

   
Vista:

Poner características aleatorias en graficas de matlab

Publicado por Alejandra (4 intervenciones) el 25/03/2012 09:14:21
Hola a todos,

Gracias de antemano a aquel que me pueda ayudar a solucionar un problema con el que llevo ya unos días.

Estoy haciendo una representación de una gráfica en matlab a través de un bucle, tomando los datos de un archivo que tengo. Mi problema es que necesito que cada vez que corra el bucle haga cambiar de manera 'automática' la forma del marcador y su color

Color

r-->red
g-->green
c-->cyan
...

Marker Type:

o--> pone un circulo
p-->estrella de cinco puntas
...

El problema es que no vienen determinados, por ejemplo por un vector de 3 componentes como ocurre con el color de las lineas o MarkerFaceColor.
Tiene que haber algo del estilo a modificar MarkerFaceColor...:

plot(x,y,'MarkerFaceColor',[rand rand rand])

¿Alguien lo sabe hacer?
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

Poner características aleatorias en graficas de matlab

Publicado por Jorge (226 intervenciones) el 25/03/2012 10:22:41
Bueno, en el peor de los casos, puedes generar vectores aleatorios tú mismo...

Por ejemplo:

x = -pi : pi/10 : pi;
y = tan(sin(x)) - sin(tan(x));

ls = ['-' '--' ':' '-.'];
mt = ['+' 'o' '*' '.' 'x' 's' 'd' '^' 'v' '>' '<' 'p' 'h'];
c = ['r' 'g' 'b' 'c' 'm' 'y' 'k' 'w'];
lsr = ls( ceil(numel(ls) .* rand));
mtr = mt( ceil(numel(mt) .* rand));
cr = c( ceil(numel(c) .* rand));

plot(x, y, [lsr mtr cr])

Cada vez que lo ejecutes, tendrá diferentes características.
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

Poner características aleatorias en graficas de matlab

Publicado por Alejandra (4 intervenciones) el 25/03/2012 10:56:03
Muchas gracias!! Es una buena solución.

Otra cosa, si quiero poner como leyenda un dato que tengo en una matriz A de datos tomada de una archivo (es decir, de A.data), si pongo:

legend(A.data(i,3)) (siendo i el indice del bucle)

no me devuelve el número elemento de la fila i de la columna 3 de mi matriz A, si no que me va devolviendo data 1, data 2... Como si detectara que es un número, un dato, pero sin devolver el que es exactamente.
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

Poner características aleatorias en graficas de matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 25/03/2012 17:13:59
Hola Alejandra.
No entiendo mucho tu segunda pregunta.
He hecho un programa segun lo que pienso que quieres hacer. Ademas no dices como es data, supongo que estaras importando con importada y la primera fila de data es un tipo char, por eso se genera la opcion de A.data, caso contrario no se genera esa opcion. En lo suficente trata de poner toda la informacion posible, para darte una respuesta hacerta.
bueno mi data es asi:


1
2
3
4
5
6
7
8
9
10
11
col1       col2     col3     col4        col5      col6     colo7     col8     col9       col10
    0.8869    0.6026    0.0430    0.5437    0.3338    0.2373    0.0875    0.8403    0.0869    0.0947
    0.9050    0.1843    0.8355    0.3867    0.2053    0.4774    0.3089    0.6250    0.3755    0.5148
    0.4984    0.1975    0.3693    0.8222    0.4944    0.9364    0.2309    0.2552    0.1874    0.9525
    0.5292    0.8620    0.6613    0.5953    0.0312    0.2411    0.9092    0.9047    0.8105    0.8431
    0.9097    0.1256    0.8957    0.7816    0.8276    0.2091    0.9369    0.7673    0.7232    0.9350
    0.5786    0.6456    0.2741    0.9877    0.2643    0.2725    0.0319    0.5627    0.6747    0.9734
    0.7758    0.4373    0.9979    0.7883    0.6775    0.7758    0.5936    0.8972    0.9140    0.3725
    0.6614    0.6126    0.8344    0.8529    0.7939    0.3314    0.0438    0.3681    0.8210    0.3209
    0.4697    0.7375    0.7913    0.4856    0.6818    0.6031    0.4249    0.3377    0.5487    0.7832
    0.2198    0.3033    0.6566    0.8738    0.6508    0.1840    0.5216    0.6189    0.0155    0.2122




Ahora te copió el programa.

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
clear all
A=importdata('caracteristicas_aleatorias.txt');
x =-pi:pi/10:pi;
y=tan(sin(x))-sin(tan(x));
estilo ={'-','--',':','-.'};
marcadores='+o*.xsd^v><ph';
color='rgbcmyk';
figure(1)
for i=1:size(A.data)
pos_estilo=round(1+(length(estilo)-1)*rand);
pos_marcadores=round(1+(length(marcadores)-1)*rand);
pos_color=round(1+(length(color)-1)*rand);
figure(gcf)
pause(1)
plot(A.data(:,i),[cell2mat(estilo(pos_estilo)) marcadores(pos_marcadores)...
    color(pos_color)],'linewidth',2)
legend(['Columna ',num2str(i)])
 
end
 
 
 
clear all
A=importdata('caracteristicas_aleatorias.txt');
x =-pi:pi/10:pi;
y=tan(sin(x))-sin(tan(x));
estilo ={'-','--',':','-.'};
marcadores='+o*.xsd^v><ph';
color='rgbcmyk';
figure(2)
hold on
for i=1:size(A.data)
pos_estilo=round(1+(length(estilo)-1)*rand);
pos_marcadores=round(1+(length(marcadores)-1)*rand);
pos_color=round(1+(length(color)-1)*rand);
figure(gcf)
pause(1)
plot(A.data(:,i),[cell2mat(estilo(pos_estilo)) marcadores(pos_marcadores)...
    color(pos_color)],'linewidth',2)
a{i}=['Columna ',num2str(i)];
set(legend(a),'Location','Northeast')
end
hold off



1
2
3
EJECUCION.
 
>> caracteristicas_aleatorias



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.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