Размещение кластеров в графике Excel

Размещение кластеров в графике Excel

У меня есть сгенерированный набор данных, аналогичный следующей таблице.

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

Этот набор данных будет сгенерирован с использованием алгоритма кластеризации k-mean. Поэтому я хочу показать свой вывод на графике в виде кластеров. Эти данные будут сгенерированы с использованием другой программы на языке C. Как только я получу эти данные, я хочу отобразить их в Excel в виде кластеров, как показано ниже, разными цветами для каждого кластера. Можете ли вы мне рассказать, как это сделать?

введите описание изображения здесь

решение1

Для каждого кластера создайте столбец рядом с исходными данными и используйте эту формулу, чтобы получить значение Y, если метка строки равна метке столбца:

=IF($A2=D$1,$C2,NA())

Копировать по горизонтали и вертикали. Построить диаграмму рассеивания с тремя рядами A, B и C, все из которых используют одни и те же значения X.

введите описание изображения здесь

решение2

Я предлагаю один инструмент под названиемВесело весело который поддерживает кластерный анализ в Excel.

Он позволяет людям кодировать JavaScript и Python (а не классические макросы VBA) в Excel. Он также поддерживает внешние библиотеки. С помощью этого инструмента вы можете использовать любую понравившуюся вам библиотеку JavaScript для анализа данных (например, кластерного анализа) или для построения графиков.

Для ответа на вопрос функция принимает входные данные в формате массива JSON (определяется в настройках) и сохраняет их в переменную JavaScript. А затем создает связь между ними и электронными таблицами.

Здесь я используюCanvasJSи jQuery для построения этой диаграммы.Clusterfck.jsиспользуется для кластерного процесса. Основной код:

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();

Вот скриншот:

Скриншот

Как видите, он использует кластер k-средних с k = 4. Вы можете изменить гиперпараметры в коде.

Theсвязьэтой функции онлайн-игровой площадки. Скриншот выглядит следующим образом:

Скриншот

Вторая панель — предварительный просмотр Excel. Третья панель — область кодирования. Последняя панель — вывод кода.

Надеюсь, это поможет и будет весело :)

P.S. Я разработчик Funfun.

Связанный контент