
先说重点,欢迎给个 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 jr55475f112iz2tu 2021-01-21 14:05:09 +08:00 想了解一下,最后的附图是默认输出的样式,还是也是调整后的样子? |
11 bojue 2021-01-21 14:09:41 +08:00 @0vip #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 |