Julia 可视化库:VegaLite.jl 【笔记1 - 安装】


#1

[TOC]

Julia 可视化库:VegaLite.jl 【笔记1 - 安装】

什么是 Vega 和 VegaLite

Vega 是一种可视化语法,一种用于创建,保存和共享交互式可视化设计的声明性语言。Vega 采用 JSON 格式描述可视化的视觉外观和交互行为,并使用 HTML5 Canvas 或 SVG 生成基于 Web 的视图。

Vega-Lite 是一种高级可视化语法。它支持简洁的 JSON 语法,用于支持快速生成可视化以支持分析。Vega-Lite 支持交互式多视图图形,可以编译成 Vega

Vega 有着广泛的第三方应用,参见 https://vega.github.io/vega-lite/applications.html

Julia Python R Elm Markdown 工具
VegaLite.jl PdVegaAltair altair Elm-Vega visdown Vega-Editorvega-desktopVoyagervega-embed

VegaLite.jl 文档绘图例子: http://fredo-dedup.github.io/VegaLite.jl/stable/index.html

VegaLite 官方 Example Galary: https://vega.github.io/vega-lite/examples/

VegaLite API 文档( JSON 格式): https://vega.github.io/vega-lite/docs/

安装 VegaLite.jl

安装命令(Julia 0.6 版本):

Pkg.add("VegaLite")
Pkg.add("IJulia")
Pkg.add("VegaDatasets")

参见: http://fredo-dedup.github.io/VegaLite.jl/stable/gettingstarted/installation.html

在 REPL 界面运行绘图命令默认使用浏览器窗口展示绘图,可安装 ElectronDisplay.jl 以使用窗口展示绘图。

Pkg.add("ElectronDisplay")

VegaLite.jl 在 Jupyter Notebook 中可展示绘图,可与 Jupyter Lab 或 nteract 进行交互式绘图。

支持 VS Code 和 Juno/Atom 插件。

说明

首先申明,本人 Julia 萌新一枚,非计算机专业,下面的笔记中使用的术语不够专业还请见谅 ~~

写这些笔记算是我开启 Julia 之旅的第一站吧。(顺便为 Julia 1.0 正式发布由衷地感到高兴 V.V)

其实 VegaLite.jl 这个库还在完善当中,并不是很成熟。而且学习到深入一点的时候,基本就是 JSON 写法 + 一些 Julia 语言特性了。

和 python 的 Matplotlib 库比起来, Matplotlib 能够精细地控制绘图的每一处细节,却在可视化表达上与数据的联系有所割裂,Pandas 封装了一部分绘图功能,把 dataframe 数据处理和 pyplot 连接起来,在可视化方面功能有限。而 VegaLite.jl 在数据可视化方面仿佛是开箱即用,方便灵活

Json 格式在数据传输上独具优势,但是复杂的嵌套结构挺折磨人的… 试想在结构复杂一点的可视化代码里面穿插着写 ()[]{} 不是一件愉快的事情啊。

可是无论怎样,世界上没有绝对完美之事物

VegaLite.jl 便利的可视化与 Julia 强大的性能结合或许能碰撞出我们意想不到的火花呢。

→ 关于此笔记

参考了以下两个链接:

  1. http://fredo-dedup.github.io/VegaLite.jl/stable/gettingstarted/tutorial.html

  2. https://vega.github.io/vega-lite/docs/

我使用的 Julia 版本为 0.6 (目前尚未在 0.7 和 1.0 版本上测试过),编辑器为 Jupyter Notebook,所有代码在 JuliaBox 平台上运行通过。

运行环境如下 ↓

    JULIA_HOME: /opt/julia-0.6.2/bin
    Julia Version 0.6.2
    Commit d386e40c17 (2017-12-13 18:08 UTC)
    Platform Info:
      OS: Linux (x86_64-pc-linux-gnu)
      CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
      WORD_SIZE: 64
      BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
      LAPACK: libopenblas64_
      LIBM: libopenlibm
      LLVM: libLLVM-3.9.1 (ORCJIT, haswell)

#2

我之前也在关注VegaLite但是0.7好像还不能用。

确实看起来使用更方便,但是其实我不太理解的是VegaLite是如何利用JIT和代数计算的呢?可以具体解释一下么?是说本身grid之类的实现利用了Julia的utility?期待更新。


#3

可视化的时候需要进行数据计算,在数据量很大的情况下非常有优势吧。预编译之后明显感觉画图更快了,不是 JIT 的功劳吗?原谅我这个小白 T.T


#4

哦哦,但是就还是有所有pure Julia实现的package都有的这个问题,就是如果我只画一次完事儿那就很慢了…

你有没有试过用package compiler编译这个东西话说?不知道编译之后第一次的运行时间怎么样。我在issue里面看到启动时间可以提高很多。0.7开始应该就可以支持aot编译了。(就是编译出来的还比较大)


#5

emmm… 我用的 JuliaBox (Julia 0.6 版本),在线运行Julia代码,只用过Jupyter Notebook和安装package功能。电脑本地里面还是 Julia 0.5,去年安装之后一直没怎么研究 Julia,所以不了解大佬说的 package compiler 是啥== (膜拜大佬)


#6

完整笔记上传至本人 Github 了:

md文件(打开较快):

Jupyter 笔记(打开很慢):
https://github.com/ZIP97/R_Python_Julia_codes/blob/master/vega-lite%20NOTE1-7.ipynb