【问题标题】:Angular 4 with Plotly带有情节的Angular 4
【发布时间】:2018-06-29 01:37:55
【问题描述】:

我正在尝试构建一个需要图形的 Angular 4 应用程序。

我打算使用 plotly,但我没有得到任何清晰的网站显示在 angular 4 应用程序中包含 plotly.js 文件的步骤或方式。

有人可以给我一些见解吗?

【问题讨论】:

标签: angular


【解决方案1】:

这就是我所做的,首先是使用 NPM(或您使用的任何包管理器)安装 plotly.js:

npm install plotly.js --save
npm install @types/plotly.js --save

注意:你可以考虑在dev section (--save-dev)中安装@types

然后我在compilerOptions 下编辑了src/tsconfig.app.json 以包含此内容:

    "types": [
      "plotly.js"
    ],"paths": {
      "plotly.js": [
        "../node_modules/plotly.js/dist/plotly-basic.js"
      ]
    }

然后,您可以通过如下方式在任何组件中使用 Plotly.js:

import * as Plotly from 'plotly.js';
import {Config, Data, Layout} from 'plotly.js';

【讨论】:

  • 似乎不需要手动将plotly js文件包含到compilerOptions中,因为webpack提供的tree shaking应用程序,在Angular 2+内部使用。
  • 如果您在升级到 Angular 6 后遇到问题,请阅读此内容 (stackoverflow.com/questions/50213078/…)
【解决方案2】:

现在有一个official Angular wrapper for plot.ly

npm install angular-plotly.js plotly.js

将情节添加到您的主应用模块:

import { PlotlyModule } from 'angular-plotly.js';

@NgModule({
    imports: [CommonModule, PlotlyModule],
    ...
})
export class AppModule { }

然后可以像这样将图表添加到组件中:

@Component({
    selector: 'plotly-example',
    template: '<plotly-plot [data]="graph.data" [layout]="graph.layout"></plotly-plot>',
})
export class PlotlyExampleComponent {
    public graph = {
        data: [
            { x: [1, 2, 3], y: [2, 6, 3], type: 'scatter', mode: 'lines+points', marker: {color: 'red'} },
            { x: [1, 2, 3], y: [2, 5, 3], type: 'bar' },
        ],
        layout: {width: 320, height: 240, title: 'A Fancy Plot'}
    };
}

【讨论】:

  • @carkod 假设您已经解决了这个问题,但是查看公共 API,我认为您应该期望更改整个数组引用。这意味着即使您“只是”更改数组中的元素,您也需要克隆数组。您可以使用slice() 轻松完成此操作。因此,如果graph.data 上面发生了更改,您可以简单地执行graph.data = graph.data.slice()
  • 请注意,克隆阵列也可以使用graph.data = Array.from(graph.data) 完成。虽然这确实是一种风格上的东西,但我发现它更清楚地传达了“我想要这个数组的副本”
  • @Koslun 是官方的吗?
  • @hoangk 是的,它是来自 plot.ly 的官方图书馆。这意味着它是由 plot.ly 自己而不是一个或多个社区成员支持的。
猜你喜欢
  • 2017-11-28
  • 2018-01-01
  • 2017-09-02
  • 2019-12-05
  • 2018-03-13
  • 2018-04-01
  • 2018-03-10
  • 2017-09-18
  • 2018-03-28
相关资源
最近更新 更多