【问题标题】:changing ng2-charts label text on imported chart data在导入的图表数据上更改 ng2-charts 标签文本
【发布时间】:2017-05-01 04:47:08
【问题描述】:

我正在将数据导入图表(角度 2 中的 ng2 图表),并且我正在从 json 文件加载数据。我想知道如何覆盖图表上的标签文本?

这是我所拥有的:https://plnkr.co/edit/xr6xs6PmaF9iQ6DsRnHT?p=preview

在图表的顶部有Label 0 我想覆盖/更改该标签文本以说:Test Results 我如何使用我当前的代码结构来做到这一点。

【问题讨论】:

    标签: angular ng2-charts


    【解决方案1】:

    拳头,请更新您的问题以包含来自 plunker 的代码。以防万一那个 plunker 被删除。

    您必须使用 datasets 输入而不是 data 才能利用图例标签。

    plunkerhttps://plnkr.co/edit/UUW0uHdyVacK7ZMqUsp0?p=preview

    //our root app component
    import {Component, NgModule, OnInit} from '@angular/core'
    import {BrowserModule} from '@angular/platform-browser'
    import {ChartsModule, Color} from 'ng2-charts';
    import { Http, Response, HttpModule, JsonpModule  } from '@angular/http';
    import { Observable } from 'rxjs/Observable';
    import { DataService } from './service';
    import { IDataChart } from './dataChart';
    
    @Component({
      selector: 'my-app',
      providers: [DataService],
      template: `
        <div style="width:100%; display:block">
          <canvas *ngIf="loaded" baseChart [datasets]="barChartData" [options]="barChartOptions" [legend]="barChartLegend" [chartType]="barChartType" (chartHover)="chartHovered($event)" (chartClick)="chartClicked($event)">
          </canvas>
        </div>
      `,
    })
    export class App {
    
      barChartOptions: any = {
        scaleShowVerticalLines: false,
        responsive: true,
        scales: {
            xAxes: [{
                ticks: {
                    beginAtZero:true
                }
            }]
        }
      };
      barChartLabels: string[] =[];
      barChartType: string = 'horizontalBar';
      barChartLegend: boolean = true;
      barChartData: any[] =[];
      resultData: IDataChart[] =[];
      loaded = false;
    
      constructor(private dataService: DataService) {
      }
    
      getData(){
        this.dataService.getData().subscribe(data => {
          this.resultData = data;
          this.barChartLabels = this.resultData.map(item => item.label);
          var d=this.resultData.map(item => item.data)
          this.barChartData = this.resultData.map(item => <any>{"data":Array.of(item.data), "label":item.label}); // <-- map to correct data structure for 'datasets'
          console.log(this.barChartData)
          // add new data set
          //this.barChartData.push({data:[200], label:"new data set"})
          this.loaded = true;
        }
      }
    
      ngOnInit() {
        this.getData();
      }
    }
    
    @NgModule({
      imports: [ 
        BrowserModule,
        ChartsModule,
        HttpModule,
        JsonpModule
      ],
      declarations: [ App ],
      bootstrap: [ App ]
    })
    export class AppModule {}
    

    【讨论】:

    • 由于我不需要为每个项目指定特定标签,因此我根据需要对其进行了更改:"label":"Test Results" - 非常感谢您的帮助。
    • 谢谢你——你的 plunker 正是我所需要的
    猜你喜欢
    • 2020-09-08
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2017-09-26
    • 2020-03-20
    • 2017-09-03
    • 2019-11-28
    • 1970-01-01
    相关资源
    最近更新 更多