angular - 带有 Angular2+ 的 dc.js 图表

标签 angular dc.js crossfilter

有人在 Angular2+ 应用程序中使用过 dc.js 吗?任何帮助或指点将不胜感激。

我能够让我的应用程序在普通的 html/java 脚本上运行。现在我需要在 Angular 2+ 应用程序中实现相同的功能。

最佳答案

编辑:几周后我有了更好的理解,也许可以给出一些更好的指导,所以这里是:

生成 Angular 项目后,安装 dc、它的类型文件和所有需要的依赖项,如下所示:

npm i --save dc @types/dc crossfilter2 d3 @types/d3

注意 @types/crossfilter 是不需要的,因为 crossfilter 开始直接在他们的包中提供他们自己的类型文件。 之后,您可以通过在组件中导入它们来导入 dccrossfilterd3 并像这样使用它们:

component.html:

<div #nameOfDiv></div>

component.ts

import * as d3 from 'd3';
import * as dc from 'dc';
import * as crossfilter from 'crossfilter2';
import {Dimension} from 'crossfilter2';

export class Graph {
    @ViewChild('nameOfDiv') chartDiv: ElementRef;
    private ndx: Dimension<T> = crossfilter<T>([{...}, {...}]);

    [...]

    paint() {
        let chart = dc.scatterPlot(this.chartDiv.nativeElement);
        chart.render();
    }
}

最后不要忘记包含 dcjs css 样式表,无论是在旧答案中所写的 index.html 中还是您想要的任何地方。


旧答案: 我目前处于同一点,在纯 html 和 js 中对 dc.js、d3.js 和 crossfilter2 的经验有限。现在我想在 Angular 5 中使用 dcjs。

我刚刚通过为 dc、d3 和 crossfilter 安装 @types 文件并将实际库包含在 index.html header 中,在组件中绘制了第一个模拟示例。

index.html

<head>
[...]
  <script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.js'></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/crossfilter2/1.4.5/crossfilter.js" rel="script"></script>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/dc/2.1.9/dc.js"></script>
  <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/dc/2.1.9/dc.css" />
</head>

ng 安装

ng install --save @types/dc
ng install --save @types/d3
ng install --save @types/crossfilter

component.ts

import * as dc from 'dc';
import * as CrossFilter from 'crossfilter';

interface Data {
date: string;
quantity: number;
[...]
}

export class GraphComponent {
  private chart: dc.PieChart;
  private ndx: CrossFilter.CrossFilter<Data> = crossfilter<Data>([{ date: '2011-11-14T16:17:54Z', quantity: 2, total: 190, tip: 100, type: 'tab' }, {...}])

  paintChart(): void {
    this.chart = dc.pieChart('#id__html_div');
    let dim = this.data.dimension((d) => d.date);
    let group = dim.group().reduceCount();
    this.chart.width(200).height(200).dimension(dim).group(group);
    dc.renderAll();
  }
}

希望对您有所帮助。所有这些只是我在过去几个小时内所做的,这并不意味着这是预期的方式或最佳方式。我也是 Angular 和 dcjs 的新手..

关于angular - 带有 Angular2+ 的 dc.js 图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48104529/

相关文章:

angular - 检查 JWT 到期是否足以授权用户?

Angular 2 @ViewChild 不工作。无法读取未定义的属性 "title"

dc.js - 通过单击 dc.js 中的数据表行来过滤数据

dc.js - 减少大型数据集的 DOM 元素的策略

d3.js - DC.js scatterPlot 坐标轴刻度位置

javascript - 在 crossfilter 中过滤多个离散值

javascript - 在 TypeScript 中使用 subscribe 方法操作值

file - Angular2文件输入onchange

javascript - 获取交叉过滤器中的所有过滤值

crossfilter - 按列重新排序数据表