Tengo un conjunto de datos generado similar a la siguiente tabla.
Label | X | Y | A | 1 | 1 | B | 2 | 2 | B | 3 | 2 | A | 4 | 3 | C | 5 | 4 | A | 4 | 3 | C | 2 | 1 | This list will expand to 1000 of items
Este conjunto de datos se generará utilizando el algoritmo de agrupación k-media. Por eso quiero mostrar mi resultado en un gráfico, como grupos. Estos datos se generarán mediante otro programa en lenguaje C. Una vez que obtenga estos datos, quiero trazarlos en Excel como grupos como se muestra a continuación en diferentes colores para cada grupo. ¿Puedes decirme cómo puedo hacer esto?
Respuesta1
Para cada grupo, cree una columna junto a sus datos de origen y use esta fórmula para obtener el valor Y si la etiqueta de la fila es igual a la etiqueta de la columna:
=IF($A2=D$1,$C2,NA())
Copie a lo largo y a lo ancho. Construya un gráfico de dispersión con las tres series A, B y C, todas ellas usando los mismos valores de X.
Respuesta2
Propongo una herramienta llamadaDivertido divertido que admite el análisis de conglomerados en Excel.
Permite a las personas codificar JavaScript y Python (en lugar de las macros clásicas de VBA) en Excel. También admite bibliotecas externas. Con esta herramienta, puede utilizar cualquier biblioteca de JavaScript que desee para realizar análisis de datos (por ejemplo, análisis de conglomerados) o trazar gráficos.
Para responder a la pregunta, la función toma entradas en el formato de matriz JSON (definida en la configuración) y las guarda en una variable de JavaScript. Y luego crea un vínculo entre ellos y las hojas de cálculo.
Aquí usolienzojsy jQuery para trazar este gráfico.clusterfck.jsse utiliza para el proceso de clúster. El código central:
var nb_clusters = 4;
// Calculate clusters.
var clusters = clusterfck.kmeans(data, nb_clusters); // data, nb_clusters
var chart = new CanvasJS.Chart("chartContainer", {
title: {
text: "Birth and death rate"
},
width:500,
axisX: {
title: "Birth rate",
minimum: 0,
maximum: 60
},
axisY: {
title: "Death rate",
titleFontSize: 16
},
data: [
{
type: "scatter",
markerType: "circle",
dataPoints: process(clusters[0])
},
{
type: "scatter",
markerType: "square",
dataPoints: process(clusters[1])
},
{
type: "scatter",
markerType: "square",
dataPoints: process(clusters[2])
},
{
type: "scatter",
markerType: "cross",
dataPoints: process(clusters[3])
}
]
});
chart.render();
Aquí está la captura de pantalla:
Como puede ver, utiliza un grupo de k-medias con k=4. Puede cambiar los hiperparámetros en el código.
Elenlacede esta función de patio de juegos en línea. La captura de pantalla es la siguiente:
El segundo panel es una vista previa de Excel. El tercer panel es el área de codificación. El último panel es la salida del código.
Espero que te ayude y te diviertas :)
PD: Soy desarrollador de Funfun.