gopherdata / gopherdata/gophernotes

Directly support display MIME types for Vega and Vega-lite JSON rendering?

未关闭
#203 4 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看
enhancement
主要语言
Go
星标
4k
派生
264
平均合并
7 天 21 小时
30 天内合并 PR
1

描述

Hi, I've finally worked out how to use gophernotes to display [Vega](https://vega.github.io/vega/) / [VegaLite](https://vega.github.io/vega-lite/) SVG graphics, (crudely) similar to what the [Altair Python package](https://altair-viz.github.io/index.html) can do. This works "out of the box" in Nteract and JupyterLab. In classic Jupyter notebooks I believe it requires installing a Jupyter extension to support Vega(lite).

Anyway, thanks to the [excellent example documentation](https://github.com/gopherdata/gophernotes/blob/master/examples/Display.ipynb) for the Gophernotes `display` support package, I was able to figure out how to make this work:

```golang
// Support for Vega...
type Vega struct {
Json map[string]interface{}
}

func (v Vega) SimpleRender() display.MIMEMap {
return display.MIMEMap{
`application/vnd.vega.v5+json`: v.Json,
`text/plain`: "",
}
}

// ...and VegaLite
type VegaLite struct {
Json map[string]interface{}
}

func (vl VegaLite) SimpleRender() display.MIMEMap {
return display.MIMEMap{
`application/vnd.vegalite.v4+json`: vl.Json,
`text/plain`: "",
}
}
```

To use, simply create and populate one of the above types:

```golang
import "encoding/json"

g := []byte(`
{
"$schema": "https://vega.github.io/schema/vega-lite/v2.0.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", "b": 52}
]
},
"mark": "bar",
"encoding": {
"x": {"field": "a", "type": "ordinal"},
"y": {"field": "b", "type": "quantitative"}
}
}`)

vl := VegaLite{}
err := json.Unmarshal(g, &vl.Json)
vl
```

![visualization](https://user-images.githubusercontent.com/428642/79538802-e7e11300-8039-11ea-8ca1-b1049ad38e5b.png)

It would be cool if this was actually built into Gophernotes, or at least documented, since Vega(Lite) are pretty world class declarative plotting libraries and this opens them up for use with gophernotes!

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。