nicolaskruchten/pivottable

JavaScript 交叉表实现(也称为交叉网格、交叉图、交叉表),具有拖放功能。

安装量: 144604

依赖项: 1

建议者: 0

安全性: 0

星标: 4340

关注者: 252

分支: 1075

开放问题: 382

语言:咖啡Script

v2.23.0 2018-11-04 18:21 UTC

README

npm cdnjs tests license

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 的旧版本,具有许多面向开发者的特性和一些可视化效果。通过 可选附加组件,汇总表可以渲染为各种类型的图表,将交叉表转换为交叉图。

image

上面的动画基于 加拿大议会 2012 数据集示例

演示/示例在哪里?

示例页面 上有很多,但以下是一些好的切入点

为什么它很好?

  • 它很轻量:核心(无图表支持)是一个包含不到 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或使用RequireJSBrowserify等。对于后者选项,您可以通过npm install pivottableNPM获取它,或者通过bower install pivottable使用Bower

如果您直接加载脚本(如示例中所示),则需要

  1. 加载依赖项
    1. 所有情况下都需要jQuery
    2. jQueryUI,用于交互式pivotUI()函数(见下文)
    3. 如果使用图表插件,则需要D3.js、C3.js和/或Google Charts
  2. 加载PivotTable.js文件
    1. pivot.min.js
    2. 您希望使用的任何插件

依赖项和PivotTable.js文件可以加载

  1. 通过将文件从其官方发行版复制到您的项目并本地加载它们(您可以在dist目录中找到PivotTable.js文件)
  2. 从一个内容分发网络(CDN)如CDNJS

(示例从CDNJS加载依赖项并将PivotTable.js本地加载)

我如何使用代码?

PivotTable.js提供了两个主要函数:pivot()pivotUI(),两者都作为jQuery插件实现,以及一系列辅助程序和模板。

pivot()

一旦加载了jQuery和pivot.js,此代码(演示

$("#output").pivot(
    [
        {color: "blue", shape: "circle"},
        {color: "red", shape: "triangle"}
    ],
    {
        rows: ["color"],
        cols: ["shape"]
    }
);

将此表格添加到$("#output")(默认行为是填充表格单元格的计数,该行为可覆盖)

image

pivotUI()

对代码的微小修改(调用pivotUI()而不是pivot())会在周围产生一个拖放用户界面,前提是你已经导入了jQueryUI(演示

$("#output").pivotUI(
    [
        {color: "blue", shape: "circle"},
        {color: "red", shape: "triangle"}
    ],
    {
        rows: ["color"],
        cols: ["shape"]
    }
);

image

请注意,尽管在上面的例子中我们向两者传递了相同的参数,但通常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,其他贡献者

特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人免费处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向获得软件的人提供本软件副本,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的还是与特定用途相关的,包括但不限于适销性、适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论该责任源于合同行为、侵权或其他,无论该责任是否与软件、软件的使用或其他相关。