[开源] Python 上的可视化库——PyG2Plot

2021-01-21 09:22:01 +08:00
 50vip

先说重点,欢迎给个 Star 🙇‍♂️


G2Plot 是一个基于配置、体验优雅、面向数据分析的统计图表库,帮助开发者以最小成本绘制高质量统计图表。

那么对于很多 Python 语言环境的同学,如何使用 G2Plot 在进行数据分析之后的可视化呢?也就是 如何将 G2Plot 和 Python 结合起来?**这里给出的就是基于 G2Plot 封装出 **PyG2Plot,欢迎帮我充一下 Star 。 **

如何使用

$ pip install pyg2plot

主要有 2 种使用方式(能力扩充中,欢迎提 issue )

1. 渲染出完整的 HTML

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()

这种情况可以用于:

2. 在 Jupyter notebook 中预览

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 。

3027 次点击
所在节点    分享创造
15 条回复
shyrock
2021-01-21 09:55:02 +08:00
G2Plot 完全基于可视分析理论的配置式结构,所以封装上比 pyecharts 简洁非常非常多。

lz 说的可视分析理论不知道有没有资料可以学习一下。说实话我觉得现在的可视化库要么简单但是表现力差,要么表现力好但是配置太复杂。
50vip
2021-01-21 10:19:16 +08:00
@shyrock 要不要来一个 BI 产品学习一下数据可视分析。
more1sec
2021-01-21 12:41:15 +08:00
跟 matplotlib 比优势在哪
yanghui1228
2021-01-21 13:13:04 +08:00
@more1sec matplotlib 好像不能直接输出 html
yinheli
2021-01-21 13:17:06 +08:00
fix typo jinjia2 -> jinja2 😂
50vip
2021-01-21 13:24:28 +08:00
@yinheli 已经改不了了,囧~
50vip
2021-01-21 13:25:41 +08:00
@more1sec matplotlib 肯定是很牛的,但是 PyG2Plot 是 G2Plot 的封装,是另一个选择吧,另外一个同学也指出了和 matplotlib 不一样的地方
bojue
2021-01-21 13:42:45 +08:00
@shyrock 感觉现在的可视化库"表现力好的配置复杂,简答的表现力差",这个应该能理解吧,毕竟丰富的表现力需要丰富的数据参数,我之前看到一个需求:目前的可视化图表满足大部分应用,但是大量 [50w+] 数据的表现力不够,不管是性能还是展示的维度
50vip
2021-01-21 13:57:11 +08:00
@bojue 我们内部做了大数据的多维分析组件,类似 tableau,50w 数据问题不大。主要还是做好按需渲染就行!
czfy
2021-01-21 14:05:09 +08:00
想了解一下,最后的附图是默认输出的样式,还是也是调整后的样子?
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
50vip
2021-01-21 15:01:12 +08:00
echarts G2 G2Plot 是一个维度的东西,是做数据可视化的 ui 的,而 tableau 是数据分析产品,前者只是后者的很小的一个技术维度。

@bojue
marcolin
2021-01-21 15:03:21 +08:00
可以试试 altair,通过 vega 也可以输出到 html
bojue
2021-01-24 19:05:02 +08:00
@50vip tableau 虽然是数据分析的,但是就交互方式来讲挺友好(傻瓜式)的,就想现在服务端有一个数据包,作为运营或者会计他们是不懂代码的,在完全不会使用 echart 的情况下,可以通过选择关注的指标获取数据包通过数据分析生成的图表类报表->自定义的 chats 图,不知道这个算智慧图表还是数据分析,在智慧城市类大屏项目类有团队在做,具体只能意会没设计过也说不清楚
50vip
2021-01-25 10:04:43 +08:00
@bojue tableau powerbi 等属于数据可视分析的产品( BI 产品)国内也有 fineBI 等这类。而 G2Plot 、Echarts 只是这些产品在可视化上的前端可视化技术方案。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/746887

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX