先说重点,欢迎给个 Star 🙇♂️
G2Plot 是一个基于配置、体验优雅、面向数据分析的统计图表库,帮助开发者以最小成本绘制高质量统计图表。
那么对于很多 Python 语言环境的同学,如何使用 G2Plot 在进行数据分析之后的可视化呢?也就是 如何将 G2Plot 和 Python 结合起来?**这里给出的就是基于 G2Plot 封装出 **PyG2Plot,欢迎帮我充一下 Star 。 **
$ pip install pyg2plot
主要有 2 种使用方式(能力扩充中,欢迎提 issue )
from pyg2plot import Plot
line = Plot("Line")
line.set_options({
"data": [
{ "year": "1991", "value": 3 },
{ "year": "1992", "value": 4 },
{ "year": "1993", "value": 3.5 },
{ "year": "1994", "value": 5 },
{ "year": "1995", "value": 4.9 },
{ "year": "1996", "value": 6 },
{ "year": "1997", "value": 7 },
{ "year": "1998", "value": 9 },
{ "year": "1999", "value": 13 },
],
"xField": "year",
"yField": "value",
})
# 1. render html file named plot.html
line.render("plot.html")
# 2. render html string
line.render_html()
这种情况可以用于:
from pyg2plot import Plot
line = Plot("Line")
line.set_options({
"height": 400, # set a default height in jupyter preview
"data": [
{ "year": "1991", "value": 3 },
{ "year": "1992", "value": 4 },
{ "year": "1993", "value": 3.5 },
{ "year": "1994", "value": 5 },
{ "year": "1995", "value": 4.9 },
{ "year": "1996", "value": 6 },
{ "year": "1997", "value": 7 },
{ "year": "1998", "value": 9 },
{ "year": "1999", "value": 13 },
],
"xField": "year",
"yField": "value",
})
line.render_notebook()
在我们做数据分析教程的过程中,可以将我们的数据使用 PyG2Plot 进行可视化并预览出来,十分方便!
PyG2Plot 原理其实非常简单,其中借鉴了 pyecharts 的实现,但是因为蚂蚁金服的 G2Plot 完全基于可视分析理论的配置式结构,所以封装上比 pyecharts 简洁非常非常多。
基本的原理,就是通过 Python 语法提供 API,然后再调用 render 的时候,生成最终的 G2Plot HTML 文本,而针对不同的环境,生成的 HTML 稍有区别。
所以核心文件是:
PyG2Plot 提供的 API 非常简单,使用上:
# 1. import
from pyg2plot import Plot
# 2. use a plot
line = Plot("Line")
# 3. set_options use G2Plot
line.set_options({ data, ... })
# 4. render
line.render_notebook()
而这其中 set_options API 的参数,是完全沿用 G2Plot 的配置文档,支持所有的图表、功能、特性,概念和结构上不作任何修改。
最后有任何的特性支持和 bug 反馈,欢迎 issue 或者 PR 。
1
shyrock 2021-01-21 09:55:02 +08:00
G2Plot 完全基于可视分析理论的配置式结构,所以封装上比 pyecharts 简洁非常非常多。
lz 说的可视分析理论不知道有没有资料可以学习一下。说实话我觉得现在的可视化库要么简单但是表现力差,要么表现力好但是配置太复杂。 |
3
more1sec 2021-01-21 12:41:15 +08:00
跟 matplotlib 比优势在哪
|
4
yanghui1228 2021-01-21 13:13:04 +08:00 via Android
@more1sec matplotlib 好像不能直接输出 html
|
5
yinheli 2021-01-21 13:17:06 +08:00
fix typo jinjia2 -> jinja2 😂
|
7
50vip OP @more1sec matplotlib 肯定是很牛的,但是 PyG2Plot 是 G2Plot 的封装,是另一个选择吧,另外一个同学也指出了和 matplotlib 不一样的地方
|
8
bojue 2021-01-21 13:42:45 +08:00
@shyrock 感觉现在的可视化库"表现力好的配置复杂,简答的表现力差",这个应该能理解吧,毕竟丰富的表现力需要丰富的数据参数,我之前看到一个需求:目前的可视化图表满足大部分应用,但是大量 [50w+] 数据的表现力不够,不管是性能还是展示的维度
|
10
czfy 2021-01-21 14:05:09 +08:00
想了解一下,最后的附图是默认输出的样式,还是也是调整后的样子?
|
11
bojue 2021-01-21 14:09:41 +08:00
@50vip #9 我之前看了做数据分析的需求,什么数仓,多维度分析也不是很懂,说目前的 echats 无法解决这些问题,tableau 知道但是没过多了解,应该是根据自己选择不同的分析维度,tableau 可以分析并显示合适的结果图表。这个特性可以解决配置复杂的问题,和展示维度不充分的问题。
我记得 50w+的数据,是在 G6Plot 有人做过{ 55000 节点数量 }测试,我最近刚好看到 : https://g6.antv.vision/zh/examples/performance/perf#moreData |
12
50vip OP |
13
marcolin 2021-01-21 15:03:21 +08:00
可以试试 altair,通过 vega 也可以输出到 html
|