(TODO)数据集与数据转换

数据可视化,本质上是数据驱动渲染,因此如何管理好数据,是非常关键的。

数据可视化的一个常见思路是:

  • 提供数据

  • 指定数据到视觉的映射

解决什么问题

Encoding

指定数据到视觉的映射:指定 数据集 的列(column)还是行(row)映射为 系列(series)

维度(dimension)

series.encode

视觉映射(visualMap)

注意:visualMap可不只是那个渐变条。

Data-transform

“数据转换” 这个词指的是,给定一个已有的“数据集”(dataset)和一个“转换方法”(transform),生成一个新的“数据集”,然后可以使用这个新的“数据集”绘制图表。这些工作都可以声明式地完成。

抽象地来说,数据转换是这样一种公式:outData = f(inputData)f 是转换方法,例如:filtersortregressionboxplotclusteraggregate(todo) 等等。有了数据转换能力后,我们就至少可以做到这些事情:

  • 把数据分成多份用不同的饼图展现。
  • 进行一些数据统计运算,并展示结果。
  • 用某些数据可视化算法处理数据,并展示结果。
  • 数据排序。
  • 去除或直选择数据项。

分箱变换(Bin Transform)

在Vega(一种用于创建交互式可视化的JavaScript可视化库)中,”Bin Transform”(分箱变换)是一种数据转换操作,它用于将连续数值数据分割成离散的区间或“箱子”(bins)。这种变换有助于将连续数据集转换为可以更容易地进行可视化和分析的离散数据集。

以下是Bin Transform的一些关键特点:

  1. 定义区间:你可以定义一个区间数组,指定数据应该被分割成哪些范围的箱子。例如,如果你有一个年龄数据集,你可以创建20-30、31-40等年龄组。

  2. 自动分箱:Vega还可以自动为数据分箱,通常基于最大值和最小值以及指定的箱子数量。

  3. 数据分组:Bin Transform可以将数据集中的每个值分配到一个特定的箱子中,从而创建一个新的字段,该字段表示数据点所属的箱子。

  4. 统计聚合:在分箱之后,你可以对每个箱子中的数据执行聚合操作,如求和、平均值、计数等。

  5. 可视化:分箱数据常用于创建直方图、条形图和其他类型的图表,这些图表可以更直观地展示数据的分布情况。

在Vega的JSON语法中,Bin Transform通常在transform数组中定义,例如:

1
2
3
4
5
6
7
8
9
"transform": [
{
"bin": true,
"field": "dataField", // 要分箱的数据字段
"as": ["start", "end"], // 分箱后生成的字段,表示箱子的起始和结束值
"domain": [minValue, maxValue], // 数据的最小值和最大值
"maxbins": numberOfBins // 要创建的箱子数量
}
]

这个转换可以极大地简化对连续数据的可视化处理,使得数据的分布和模式更加清晰可见。

AIGC组件库中的应用

参考资料

数据集:

https://echarts.apache.org/handbook/zh/concepts/dataset

https://vega.github.io/vega-lite/docs/encoding.html

https://vega.github.io/vega/docs/transforms/bin/

数据转换:

https://echarts.apache.org/handbook/zh/concepts/data-transform

https://vega.github.io/vega/docs/transforms/

https://vega.github.io/vega-lite/docs/transform.html