20

我一直在尝试在折线图的工具提示中设置自定义标签,例如,以 HH:mm 格式(74 分钟 --> 1:14)修改的分钟数,但不幸的是没有任何成功。将值显示为 1.283(...3) 不是替代方法。

数字到 HH:mm 作为工具提示标签

有人知道如何保存 x 和 y 轴值(分别是日期和数字),并修改工具提示显示值吗?

例如:https ://swimlane.github.io/ngx-charts/#/ngx-charts/line-chart

而不是显示颜色、国家名称和数字的工具提示,--> 颜色、国家名称和字符串(数字 > 3000 ? 'high' : 'low';)

当前行为 按预期工作。

预期行为 显示自定义标签。

重现问题 链接在上面的描述中

改变行为的动机/用例是什么? 能够自定义工具提示的内容

请告诉我们您的环境: 操作系统:Win 10 x64,IDE:Eclipse EE

ngx 图表版本: 3.0.2

角度版本: 6.0.2

浏览器: [全部]

语言: [TypeScript 2.3.3]

4

3 回答 3

44

您可以定义自己的工具提示模板并在其中呈现您喜欢的任何 HTML:

<ngx-charts-line-chart        
    [scheme]="colorScheme"
    [results]="multi" ...>
  <ng-template #tooltipTemplate let-model="model">
    This is the single point tooltip template
    <pre>{{model|json}}</pre>
  </ng-template>

  <ng-template #seriesTooltipTemplate let-model="model">
    This is vertical line tooltip template
    <pre>{{model|json}}</pre>        
  </ng-template>
</ngx-charts-line-chart>

示例:https ://swimlane.github.io/ngx-charts/#/ngx-charts/tooltip-templates

代码在这里:https ://github.com/swimlane/ngx-charts/blob/8ebb3dbcbbea443fefdcafd1f5c9069df0e0c4ae/src/app/app.component.html#L992-L998

于 2018-07-31T11:51:01.713 回答
3

上述解决方案不适用于多维图表(> 3),如 Stacked Horizo​​ntal/Vertical Bar。

适用于所有情况的另一种简单方法是将tooltipText作为属性添加为模型的一部分,如下所示:

export let multi = [
  {
    name: 'Germany',
    series: [
      {
        name: '2010',
        value: 7300000,
        tooltipText: 't1'
      },
      {
        name: '2011',
        value: 8940000,
        tooltipText: 't2'
      }
    ]
  }
];

然后在标记中使用以下代码,

<ngx-charts-bar-horizontal-stacked
      [view]="view"
      [scheme]="colorScheme"
      [results]="multi"
      [gradient]="gradient"
      [xAxis]="showXAxis"
      [yAxis]="showYAxis"
      [legend]="showLegend"
      [legendPosition]="legendPosition"
      [showXAxisLabel]="showXAxisLabel"
      [showYAxisLabel]="showYAxisLabel"
      [xAxisLabel]="xAxisLabel"
      [yAxisLabel]="yAxisLabel"
      (select)="onSelect($event)">
  <ng-template #tooltipTemplate let-model="model">
    <div class="tooltip">
      {{model.tooltipText}}
    </div>
  </ng-template>
</ngx-charts-bar-horizontal-stacked>
于 2019-05-17T20:09:27.653 回答
0

再一次感谢你。不想让问题悬而未决。问题是代码片段位于 svg元素内。这是最终版本:

<!--  This is single point tooltip template -->
<xhtml:ng-template #tooltipTemplate let-model="model">
  <xhtml:div class="area-tooltip-container">
    <xhtml:div *ngFor="let tooltipItem of model | json | durationHhmm" class="tooltip-item" style="text-align: center;">
      <a style=" font-size: 1.2em;">{{tooltipItem.series}}</a><a *ngIf="tooltipShowTime==='DAY' || tooltipShowTime==='WEEK'" style=" font-size: 1.2em;"><br />{{tooltipItem.name | date: 'HH:mm'}} Uhr</a><a *ngIf="tooltipShowTime!=='DAY' && tooltipShowTime!=='WEEK'" style=" font-size: 1.3em; font-weight: 600;"><br />&#183;</a><br /><a style=" font-size: 1.2em; font-weight: 600;">{{tooltipItem.name | date: 'dd.MM.yyyy'}} &#183; </a><a style=" font-size: 1.3em; font-weight: 600;">{{tooltipItem.value}}</a>
    </xhtml:div>
  </xhtml:div>
</xhtml:ng-template>

<!-- Datapoints Y-Axis -->
<svg:g *ngFor="let series of data">
  <svg:g ngx-charts-circle-series
         [xScale]="xScale"
         [yScale]="yScale"
         [colors]="colors"
         [data]="series"
         [scaleType]="scaleType"
         [visibleValue]="hoveredVertical"
         [activeEntries]="activeEntries"
         [tooltipDisabled]="tooltipDisabled"
         [tooltipTemplate]="tooltipTemplate"
         (select)="onClick($event, series)"
         (activate)="onActivate($event)"
         (deactivate)="onDeactivate($event)"
  /> 
</svg:g>
于 2018-08-16T16:51:17.320 回答