从数据字段获取最小值和最大值以用于域范围

时间:2019-05-01 16:11:43

标签: javascript data-visualization vega

我有一个Vega图表,需要动态计算x轴域。阅读文档,我发现我可能有两个选择:

  • 数据转换汇总最小值和最大值
  • 数据转换范围

我的数据转换聚合最小最大实现如下:

 {
   'name': 'minMaxSales',
   'source': 'monthlySales',
   'transform': { 'type': 'aggregate', 'fields': ['datum.sales_total', 'datum.sales_total'], 'ops': ['min', 'max'], 'as': ['minSales', 'maxSales'] }
 }

X比例尺定义:

'scales': [
      {
        'name': 'x',
        'type': 'linear',
        'round': false,
        'nice': false,
        'zero': true,
        'domain': {
          'data': 'minMaxSales'
        },
        'range': 'width'
      }
]

我的数据转换范围解决方案代码如下:

{
        'name': 'minMaxSales',
        'source': 'monthlySales',
        'transform': { 'type': 'extent', 'field': 'datum.sales_total', 'signal': 'extent' }
}

与X比例尺定义相同的代码。

在两种情况下,我都会遇到以下错误:

vue.runtime.esm.js:1832 TypeError: data.transform.forEach is not a function
at parseData (data.js:11)
......

1 个答案:

答案 0 :(得分:0)

transform应该是对象数组(see here)。您需要做的就是在[]周围加上方括号({ 'type': 'aggregate', 'fields': ['datum.sales_total', 'datum.sales_total'], 'ops': ['min', 'max'], 'as': ['minSales', 'maxSales'] }),它应该可以正常工作。