Eu tenho um conjunto de dados gerado semelhante à tabela a seguir.
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 dados será gerado usando o algoritmo de cluster k-mean. Então, quero mostrar minha saída em um gráfico, como clusters. Esses dados serão gerados utilizando outro programa em linguagem C. Depois de obter esses dados, quero plotá-los no Excel como clusters, conforme mostrado abaixo, em cores diferentes para cada cluster. Você pode me dizer como posso fazer isso
Responder1
Para cada cluster, crie uma coluna próxima aos dados de origem e use esta fórmula para obter o valor Y se o rótulo da linha for igual ao rótulo da coluna:
=IF($A2=D$1,$C2,NA())
Copie para cima e para baixo. Construa um gráfico de dispersão com as três séries A, B e C, todas usando os mesmos valores de X.
Responder2
Eu proponho uma ferramenta chamadaDivertido, divertido que suporta análise de cluster no Excel.
Ele permite que as pessoas codifiquem JavaScript e Python (em vez de macros VBA clássicas) no Excel. Ele também oferece suporte a bibliotecas externas. Com esta ferramenta, você pode usar qualquer biblioteca JavaScript que desejar para fazer análise de dados (por exemplo, análise de cluster) ou para traçar gráficos.
Para responder à pergunta, a função recebe entradas no formato de array JSON (definido nas configurações) e as salva em uma variável JavaScript. E então cria um link entre eles e as planilhas.
Aqui eu usoCanvasJSe jQuery para traçar este gráfico.Clusterfck.jsé usado para o processo de cluster. O código principal:
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();
Aqui está a captura de tela:
Como você pode ver, ele usa cluster k-means com k=4. Você pode alterar os hiperparâmetros no código.
Olinkdesta função de playground online. A captura de tela é a seguinte:
O segundo painel é uma visualização do Excel. O terceiro painel é a área de codificação. O último painel é a saída do código.
Espero que ajude e divirta-se :)
PS: sou desenvolvedor do Funfun