将集群放在Excel图表中


2

我有一个类似于下表生成的数据集。

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均值聚类算法生成。所以我想在图表中显示我的输出,作为集群。这些数据将使用C语言的另一个程序生成。一旦我得到这些数据,我想在Excel中将它们绘制成簇,如下图所示,每个簇的颜色不同。你能告诉我怎么做这个

enter image description here

Answers:


1

对于每个群集,在源数据旁边创建一个列,如果行标签等于列标签,则使用此公式获取Y值:

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

横向和向下复制。使用三个系列A,B和C构造散点图,所有这些都使用相同的X值。

enter image description here


1

我提出了一个名为的工具 好玩好玩 它支持Excel中的聚类分析。

它允许人们在Excel中编写JavaScript和Python(而不是经典的VBA宏)。它还支持外部库。使用此工具,您可以使用任何您喜欢的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();

这是截图:

screenshot

如您所见,它使用k均值为k = 4的簇。您可以在代码中更改超参数。

链接 这个在线游乐场的功能。截图如下:

screenshot

第二个窗格是Excel的预览。第三个窗格是编码区域。最后一个窗格是代码的输出。

希望它有所帮助,玩得开心:)

附:我是Fun Fun的开发者

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.