6

我正在使用来自 valor 软件的 ng2 图表和我的 angular 2 应用程序。我无法弄清楚如何自定义将鼠标悬停在条形图上时显示的默认工具提示的整个 html 内容。

有任何想法吗?

更新:

这是我的 html/标记代码:

<canvas baseChart width="100" height="100" style="padding:24px; border:1px solid black;border-color:gray" 
            [datasets]="barChartData"
            [labels]="barChartLabels"
            [options]="barChartOptions"
            [colors]="chartColors"
            [legend]="barChartLegend"
            [chartType]="barChartType"
            (chartHover)="chartHovered($event)"
            (chartClick)="chartClicked($event)"></canvas>
  </div>

在我的打字稿类中,我实现了 barChartOptions 函数:

tooltips: {
    callbacks: {
        ...
        ...
}}

定制一些东西,但这似乎真的很有限。例如,我可以使用 label 属性更改标签等:

label: function(tooltipItem, data) {                
    return "customlabel";
}  

但是,我看不到如何添加其他标签。使用 ng2-charts,如果我有一个包含两个数据集的条形图,并将鼠标悬停在一个条上,则它仅显示该条的标签和数据,但不显示第二个数据集的第二个条的数据。我想同时显示两者,但不知道如何为此添加额外的标签和数据。

4

2 回答 2

3

我通过以下设置取得了成功:

模板

<canvas
  baseChart
  [chartType]="chartSettings.lineChartType"
  [colors]="chartSettings.lineChartColors"
  [datasets]="lineChartData"
  [labels]="lineChartLabels"
  [legend]="chartSettings.lineChartLegend"
  [options]="chartSettings.lineChartOptions"   <---- the important one
>
</canvas>

我创建了一个文件的设置stats.chart-settings.ts

export const ChartSettings: any = {
  lineChartOptions: {
    tooltips: {
      backgroundColor: 'rgba(255,255,255,0.9)',
      bodyFontColor: '#999',
      borderColor: '#999',
      borderWidth: 1,
      caretPadding: 15,
      colorBody: '#666',
      displayColors: false,
      enabled: true,
      intersect: true,
      mode: 'x',
      titleFontColor: '#999',
      titleMarginBottom: 10,
      xPadding: 15,
      yPadding: 15,
    }
  }
}

组件中,我只有:

import { ChartSettings } from './stats.chart-settings';

...

chartSettings: any;

constructor() {
  this.chartSettings = ChartSettings;
}
于 2019-02-26T16:59:03.303 回答
0

基本上,您不能将使用 css 的样式应用于画布图表。然而,chartJS 提供了一种将样式应用到工具提示的方法。请在工具提示自定义中阅读更多信息

还要考虑这个例子:Inside chart optionstooltips: {backgroundColor: '#fff'}

于 2018-01-29T09:27:29.000 回答