正文
GG 这本书除了把这些概念介绍地很透彻,还对图形的表达做了完整的形式化表述,也正因为如此,很多工具直接在 GG 的基础上进行开发,比如 R 里的 ggplot。vega 受 GG 和 ggplot2 的启发诞生,随后更加精简,更受大家欢迎的 vega-lite 又在 vega 的基础上产生。受 vega-lite 的影响,altair 开始崛起,而我受 altair 的影响,萌发了在 Elixir 下复刻 altair 的想法。
好了,关于 GG 的故事就先讲这么多,等我通读完这本大部头后,有空可以单开一文讲讲我对可视化的认知。
如何在 Elixir 上「复刻」一个 Altair
在做这次 hackathon 之前,我已经有了还算丰富的 altair 的使用经验,但我并未太多研究 vega-lite 本身。所以在做 deneb 的过程,其实就是我自己学习 vega-lite,然后把 vega-lite 的代码用 Elixir 封装起来的一个过程。vega-lite 主要有这样几种对象:
下面是一个最简单的 vega-lite 的代码,完全由 JSON 表述:
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"description": "A simple bar chart with embedded data.",
"data": {
"values": [
{"a": "A", "b": 28}, {"a": "B", "b": 55}, {"a": "C", "b": 43},
{"a": "D", "b": 91}, {"a": "E", "b": 81}, {"a": "F", "b": 53},
{"a": "G", "b": 19}, {"a": "H", "b": 87}, {"a": "I"