intelogie / pivottable
JavaScript 交叉表实现(又称交叉网格、交叉图表、交叉表),支持拖放功能。
Requires
- components/jquery: >=1.9
README
PivotTable.js
PivotTable.js 是一个基于 jQuery/jQueryUI 的 JavaScript 交叉表库,具有拖放功能,最初用 CoffeeScript 编写,由 Nicolas Kruchten 在 Datacratic 公司创建。
它可在 CDNJS(https://cdnjs.com/libraries/pivottable)和 NPM(https://npmjs.net.cn/package/pivottable)以及 Bower(http://bower.io/)下以名称 pivottable
提供,在 Packagist.org 上为 nicolaskruchen/pivottable
。
PivotTable.js 可与 Python/Jupyter 和 R/RStudio 一起使用,您现在就可以在浏览器中通过 CSV 文件尝试它。
它做什么?
PivotTable.js 的基本功能是通过将数据集转换为汇总表来启用数据探索和分析,然后可选地添加一个真正的 2D 拖放 UI,允许用户操作此汇总表,将其转换为交叉表,与 Microsoft Excel 旧版本中的交叉表非常相似,并附带一些面向开发者的特性和一些可视化效果。通过可选的插件,汇总表可以渲染为各种类型的图表,将交叉表转换为交叉图表。
上面的动画基于 2012 年加拿大议会数据集示例。
演示/示例在哪里?
在 示例页面 上有很多,以下是一些好的入门点:
为什么它很好?
- 它很轻量:核心(不含图表支持)是一个包含少于 1000 行 CoffeeScript 的单个文件,编译后为 6.3kb 的压缩 JavaScript,仅依赖于 jQuery 和 jQueryUI 的 'sortable'。
- 它在 jQuery 和 jQueryUI 工作的地方工作(已测试 jQuery 1.8.3 和 jQueryUI 1.9.2)
- 它在 Chrome 中运行速度可接受,在通用硬件上可达十多万条记录,具体取决于属性的多重性。
- 其 UI 是 可本地化 的
- 其分层架构允许在有或没有交叉表 UI 的情况下生成汇总表(如果您不使用 UI,则没有依赖于 jQueryUI)
- 它与常见的 输入格式 一起工作
- 它的 派生属性 可以通过传递一个函数在输入记录上动态创建
- 它具有复杂的聚合函数,可以基于整个输入记录计算值(例如加权平均值)。
- 它内置了对基本热图和条形图渲染器的支持,以及可选的额外渲染器,增加了图表或TSV导出支持。
- 其扩展点允许聚合函数、表格输出、UI和可视化根据特定应用进行定制。
- 它在支持jQuery UI Touch Punch的移动设备上运行。
- 它有一个测试套件。
我如何使用UI?
PivotTable.js实现了一个类似于流行电子表格程序中的拖放UI的枢轴表。您可以将属性拖入/拖出行/列区域,并指定渲染、聚合和筛选选项。维基中有分步教程。
我如何加载代码?
PivotTable.js实现了通用模块定义(UMD)模式,因此应该与大多数脚本加载和依赖关系管理方法兼容:直接脚本加载,例如从CDNJS或使用RequireJS、Browserify等。对于后一种选项,您可以使用npm install pivottable
从NPM获取它,或通过Bower使用bower install pivottable
获取。
如果您直接加载脚本(如示例中所示),则需要
- 加载依赖项
- 在所有情况下都需要jQuery
- jQueryUI以支持交互式
pivotUI()
函数(见下文) - 如果您使用图表插件,则需要D3.js、C3.js和/或Google Charts
- 加载PivotTable.js文件
pivot.min.js
- 您希望使用的任何插件
依赖项和PivotTable.js文件可以加载
(示例从CDNJS加载依赖项,并本地加载PivotTable.js)
我如何使用代码?
PivotTable.js提供了两个主要函数:pivot()
和pivotUI()
,它们都作为jQuery插件实现,以及一些辅助器和模板。
pivot()
pivot()
一旦您加载了jQuery和pivot.js,此代码(演示)
$("#output").pivot( [ {color: "blue", shape: "circle"}, {color: "red", shape: "triangle"} ], { rows: ["color"], cols: ["shape"] } );
将此表附加到$("#output")
(默认行为是填充表格单元格的计数,这是可覆盖的行为)
pivotUI()
pivotUI()
将代码稍作修改(调用pivotUI()
而不是pivot()
)会产生具有拖放UI的相同表格,前提是您已导入jQueryUI(演示)
$("#output").pivotUI( [ {color: "blue", shape: "circle"}, {color: "red", shape: "triangle"} ], { rows: ["color"], cols: ["shape"] } );
请注意,通常情况下,pivot()
和 pivotUI()
的参数不同,尽管在上面的例子中我们向两者传递了相同的参数。请参阅 常见问题解答。
请参阅 完整参数文档。
文档在哪里?
更详细的文档可以在 wiki 中找到。
我如何构建代码和运行测试?
要安装开发依赖项,只需运行 npm install
,这将创建一个包含运行 Gulp 构建系统所需的文件的 node_modules
目录。
修改了仓库顶部任何 .coffee
文件后,您可以通过运行 node_modules/gulp/bin/gulp.js
将文件编译/压缩到 dist
目录。
完成后,您可以将浏览器指向 tests/index.html
以运行 Jasmine 测试套件。您可以在 这里查看当前测试结果。
修改代码和与示例一起工作的最简单方法是运行一个 node_modules/gulp/bin/gulp.js watch serve
命令,该命令会在文件被修改时自动编译 CoffeeScript 文件,并运行一个本地网络服务器,您可以连接到该服务器来运行测试和示例。
我如何贡献?
欢迎提交拉取请求!以下是一些 贡献指南。
我有一个问题,我如何联系您?
请首先查看 常见问题解答,如果您在那里或 wiki 中找不到您要找的内容,请 创建一个 GitHub Issue。在创建问题时,请尽量提供一个可复现的测试用例,这样其他人可以更容易地帮助您。请不要直接给作者发邮件,因为您将被要求创建一个 Github Issue :)
版权 & 许可 (MIT 许可)
PivotTable.js 由 © 2012-2016 Nicolas Kruchten, Datacratic, 其他贡献者版权所有
以下条件下,免费授予任何获得此软件及其相关文档文件(“软件”)副本的任何人,在软件上进行处理的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,以及准许获得软件副本的个人这样做,前提是
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是关于适销性、特定目的的适用性或非侵权的,包括但不限于上述保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论是在合同行为、侵权行为或其他行为中产生的,无论是由于软件或其使用或其他方式引起的。