nicolaskruchten / pivottable
JavaScript 交叉表实现(也称为交叉网格、交叉图、交叉表),具有拖放功能。
Requires
- components/jquery: >=1.9
README
PivotTable.js
PivotTable.js 是一个基于 jQuery/jQueryUI 的具有拖放功能的 JavaScript 交叉表库,最初由 Nicolas Kruchten 用 CoffeeScript 编写。
它可以在 CDNJS、NPM 和 Bower 上以 pivottable
命名使用,在 Packagist.org 上是 nicolaskruchten/pivottable
。
PivotTable.js 可以与 Python/Jupyter 和 R/RStudio 一起使用,您现在就可以在浏览器中尝试在 CSV 文件上使用它。
您正在使用 React 吗?请查看 React 版本:react-pivottable。
它做什么?
PivotTable.js 的基本功能是将数据集转换为汇总表,然后可选地添加一个真正的二维拖放 UI,允许用户操作此汇总表,将其转换为交叉表,非常类似于 Microsoft Excel 的旧版本,具有许多面向开发者的特性和一些可视化效果。通过 可选附加组件,汇总表可以渲染为各种类型的图表,将交叉表转换为交叉图。
上面的动画基于 加拿大议会 2012 数据集示例。
演示/示例在哪里?
在 示例页面 上有很多,但以下是一些好的切入点
- a JSFiddle,您可以在其中尝试代码
- 运行在 "加拿大议会 2012" 数据集上的简单演示
- 运行在 R 随附的 700 多个数据集上的完全加载演示
- 提供您自己的 CSV 文件进行输入的完全加载演示
为什么它很好?
- 它很轻量:核心(无图表支持)是一个包含不到 1000 行 CoffeeScript 的单个文件,编译后为 6.3kb 的 JavaScript 压缩和压缩版本,仅依赖于 jQuery 和 jQueryUI 的 'sortable'
- 它在哪里工作:jQuery 和 jQueryUI(已测试 jQuery 1.8.3 和 jQueryUI 1.9.2)
- 它可以在 Chrome 上以可接受的速度在通用硬件上运行,最多可达一百万条记录,具体取决于属性的基数。
- 其 UI 可以为 本地化。
- 它的分层架构允许生成带有或没有围绕它枢轴表用户界面(如果您不使用用户界面,则没有依赖于jQueryUI)的摘要表。
- 它支持常见的输入格式。
- 它可以根据整个输入记录动态创建派生属性,通过传递一个函数实现。
- 它具有复杂的聚合函数,可以根据整个输入记录计算值(例如,加权平均值)。
- 它内置了基本热图和条形图渲染器,以及添加图表或TSV导出支持的可选额外渲染器。
- 它的扩展点允许聚合函数、表格输出、用户界面和可视化根据特定应用程序进行调整。
- 它可以通过jQuery UI Touch Punch在移动设备上运行。
- 它有一个测试套件。
我如何使用用户界面?
PivotTable.js 实现了一个枢轴表拖放用户界面,类似于在流行的电子表格程序中找到的用户界面。您可以将属性拖入/拖出行/列区域,并指定渲染、聚合和过滤选项。在维基中有逐步教程。
我如何加载代码?
PivotTable.js 实现了通用模块定义(UMD)模式,因此应该与大多数脚本加载和依赖项管理方法兼容:直接脚本加载,例如从CDNJS或使用RequireJS、Browserify等。对于后者选项,您可以通过npm install pivottable
从NPM获取它,或者通过bower install pivottable
使用Bower。
如果您直接加载脚本(如示例中所示),则需要
- 加载依赖项
- 所有情况下都需要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()
而不是pivot()
)会在周围产生一个拖放用户界面,前提是你已经导入了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文件,并且还会运行一个本地Web服务器,您可以通过该服务器运行测试和示例。
我如何贡献?
欢迎提交拉取请求!以下是一些贡献指南。
我有一个问题,我如何联系您?
请首先查看常见问题解答,如果在那里或wiki中找不到您要找的内容,请创建GitHub Issue。在创建问题时,请尝试提供一个可复现的测试用例,以便其他人更容易帮助您。请不要直接给作者发电子邮件,因为您将被要求创建一个Github Issue :)。
版权 & 许可(MIT许可证)
PivotTable.js归©2012-2024Nicolas Kruchten,Datacratic,其他贡献者
特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人免费处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向获得软件的人提供本软件副本,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的还是与特定用途相关的,包括但不限于适销性、适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论该责任源于合同行为、侵权或其他,无论该责任是否与软件、软件的使用或其他相关。