Cómo visualizar la matriz de correlación como schemaball en Matlab


Tengo 42 variables y he calculado la matriz de correlación para ellas en Matlab. Ahora me gustaría visualizarlo con un schemaball. ¿Alguien tiene alguna sugerencia / experiencia sobre cómo se podría hacer esto en Matlab? Las siguientes imágenes explicarán mejor mi punto:

SCHEMABALL

introduzca la descripción de la imagen aquí

En las imágenes cada parábola entre variables significaría la fuerza de correlación entre ellas. Cuanto más gruesa es la línea, más correlación. Prefiero el estilo de imagen 1 más que el estilo en la imagen 2 donde he utilizado diferentes colores para resaltar la fuerza de la correlación.

Author: Amro, 2013-06-11

5 answers

Un poco terminado, supongo.. el código se puede encontrar aquí en github. La documentación se incluye en el archivo.

El color amarillo/magenta (para correlación positiva/negativa) es configurable, así como el tamaño de fuente de las etiquetas y los ángulos en los que se trazan las etiquetas, por lo que puede obtener fantasía si lo desea y no distribuirlas uniformemente a lo largo del perímetro/agrupar algunos/...

Si realmente desea imprimir estos gráficos o usarlos fuera de matlab, sugiero usar vector formatos (por ejemplo, eps). También es molesto que el texto cambie de tamaño cuando se acerca / se aleja, pero no conozco ninguna manera de arreglar eso sin hackear la función de zoom: /

schemaball % demo

introduzca la descripción de la imagen aquí

schemaball(arrayfun(@num2str,1:10,'uni',false), rand(10).^8,11,[0.1587 0.8750],[0.8333 1],2*pi*sin(linspace(0,pi/2-pi/20,10)))

introduzca la descripción de la imagen aquí

schemaball(arrayfun(@num2str,1:50,'uni',false), rand(50).^50,9)

introduzca la descripción de la imagen aquí

 24
Author: Gunther Struyf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-12 19:43:27

Terminé y envié mi versión al FEX: schemaball y actualizaré el enlace lo antes posible.

Hay algunas diferencias con la contribución de Gunther Struyf:

  1. Puede devolver los controladores al objeto gráfico para una personalización manual completa
  2. Las etiquetas están orientadas para permitir la máxima legibilidad de izquierda a derecha
  3. La figura se estira para ajustar las etiquetas, dejando los ejes sin cambios
  4. La sintaxis solo requiere matriz de correlaciones (pero permite entradas opcionales)
  5. Optimizado para el rendimiento.

Siga ejemplos de demostración, etiquetas personalizadas y personalización creativa. Nota: la primera figura fue exportada con saveas(), todos los demás con export_fig.

schemaball

introduzca la descripción de la imagen aquíintroduzca la descripción de la imagen aquí

x      = rand(10).^3;
x(:,3) = 1.3*mean(x,2);
schemaball(x, {'Hi','how','is','your','day?', 'Do','you','like','schemaballs?','NO!!'})

introduzca la descripción de la imagen aquí

h = schemaball;
set(h.l(~isnan(h.l)), 'LineWidth',1.2)
set(h.s, 'MarkerEdgeColor','red','LineWidth',2,'SizeData',100)
set(h.t, 'EdgeColor','white','LineWidth',1)

introduzca la descripción de la imagen aquí

El mapa de colores predeterminado:

introduzca la descripción de la imagen aquí

Para mejorar la representación en pantalla puede iniciar MATLAB con el interruptor experimental -hgVersion 2 que produce gráficos anti/aliased por defecto ahora (fuente: HG2 update | Undocumented Matlab). Sin embargo, si intenta guardar la figura, el archivo tendrá la representación anti-aliased habitual, así que aquí hay una imagen de printscreen del schemaball de Gunther:

introduzca la descripción de la imagen aquí

 24
Author: Oleg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:25:57

Actualización Importante:

Ahora puede hacer esto en Matlab con el envío FileExchange:

Http://www.mathworks.com/matlabcentral/fileexchange/48576-circulargraph

Hay un ejemplo de Matlab aquí:

Http://uk.mathworks.com/examples/matlab/3859-circular-graph-examples

Que da este tipo de parcelas hermosas:

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

 5
Author: Ander Biguri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-11 16:18:07

Coincidentemente, Cleve Moler (Matemático Jefe de MathWorks) mostró un ejemplo de este tipo de trama en su más reciente entrada de blog (no tan hermosa como las de su ejemplo, y las líneas de conexión son rectas en lugar de parabólicas, pero parece funcional). Desafortunadamente, no incluyó el código directamente, pero si le dejas un comentario en la publicación, generalmente está muy dispuesto a compartir cosas.

Lo que podría ser aún más agradable para usted es que él también aplica (y esta vez incluye) código para permutar las filas / columnas de la matriz con el fin de maximizar la proximidad espacial de nodos altamente conectados, en lugar de ordenarlos aleatoriamente alrededor de la circunferencia. Terminas con una envoltura en forma de'media luna' de líneas de conexión, con la parte gruesa de la media luna representando los nodos más conectados.

Desafortunadamente, sin embargo, sospecho que si necesita mejorar su código para obtener las líneas muy estrechas y de alta resolución en sus gráficas de ejemplo, entonces los gráficos actualmente no suavizados de MATLAB aún no están a la altura.

 3
Author: Sam Roberts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-11 09:43:16

Recientemente he estado experimentando con datos de MATLAB y la biblioteca de visualización D3 para gráficos similares: hay varios tipos relacionados de visualizaciones circulares en las que puede estar interesado y muchas de ellas son interactivas. Otra opción útil, bien horneada y disponible gratuitamente es Circos que probablemente es responsable de la mayoría de las versiones más bonitas de estos gráficos que ha visto en la prensa popular.

 2
Author: MSommer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-24 19:59:15