如何使用 Chart.js 将来自 Google Datastudio 的数据与我的自定义可视化连接起来?

How to connect Data from Google Datastudio with my Custom Visualization using Chart.js?

我想使用 Chart.js 为 Google Data Studio 编写自己的自定义数据可视化。但是如何将 Google Datastudio 中的数据连接到我自己的图表?

我正在本地开发它,所以我遵循了这里的建议:https://developers.google.com/datastudio/visualization/library-guide 但我并不完全理解它们。

我尝试了以下方法来获取数据:

 var rowData = data.tables.DEFAULT;
 var arrayOfObjects = dscc.rowData.rows.map(function(d) {
        return {
      dimID: d.dimID[0]
    };
  });

然后将其连接到我的图表配置:

new Chart(ctx, {
    type: "polarArea",
    data: {
      labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
      datasets: [
        {
          // data: [12, 15, 10, 5, 2, 3],
          data: arrayOfObjects
        }
      ]
    },
    options: {}
  });

我以为我可以取回对象数组并在我的 Chart.js 数据配置中使用它,但我收到以下错误:

Uncaught TypeError: 无法读取未定义的 属性 'rows' 在 drawViz (index.js:36) 在 eval (index.js:82) 等

如何将数据导入图表? (对不起我的英文不是最好的,希望我能解释的比较全面)

您正在查看的 Chart.js 配置似乎需要一组数字。为此,我会使用 objectTransform.

假设这个极地面积图采用 1 个指标(值)和 1 个维度(标签),并且 configIds 是(metricIDdimensionId),我会编写类似于:

const drawViz(data){
  const rows = data.tables.DEFAULT;
  // obtain an array of dimension values (for the labels)
  const labels = rows.map((d) => d['dimensionId'][0])
  // obtain an array of values (from the metric selected)
  const vals = rows.map((d) => d['metricId'][0])

  new Chart(ctx, {
      type: "polarArea",
      data: {
        labels: labels,
        datasets: [
          {
            data: vals
          }
        ]
      },
      options: {}
    });


}

dscc.subscribeToData(drawViz, {transform: objectTransform});