Vad*_*kov 10 javascript typescript kendo-chart kendo-ui-angular2 angular
我试图在 Kendo 柱形图上为每个项目获取多个标签所需的布局如下所示

我只能得到这个布局
import { Component } from '@angular/core';
import { groupBy, GroupResult } from '@progress/kendo-data-query';
import { ValueAxisLabels } from '@progress/kendo-angular-charts';
export type TrendItem = {
clientName: string;
periodName: string;
income: number;
};
@Component({
selector: 'my-app',
template: `
<kendo-chart>
<kendo-chart-category-axis>
<kendo-chart-category-axis-item [categories]="categories">
</kendo-chart-category-axis-item>
</kendo-chart-category-axis>
<kendo-chart-value-axis>
<kendo-chart-value-axis-item [labels]="valueAxisLabels">
</kendo-chart-value-axis-item>
</kendo-chart-value-axis>
<kendo-chart-series>
<kendo-chart-series-item *ngFor="let groupedResult of groupedTrendsByPeriod" [data]="groupedResult.items" field="income" type="column">
<kendo-chart-series-item-labels [content]="labelVisual">
</kendo-chart-series-item-labels>
</kendo-chart-series-item>
</kendo-chart-series>
</kendo-chart>
`,
})
export class AppComponent {
public valueAxisLabels: ValueAxisLabels = {
font: 'bold 16px Arial, sans-serif',
};
public trendItems: TrendItem[] = [
{
clientName: 'Client1',
periodName: 'Q1 2020',
income: 20,
},
{
clientName: 'Client1',
periodName: 'Q2 2020',
income: 15,
},
{
clientName: 'Client1',
periodName: 'Q3 2020',
income: 35,
},
{
clientName: 'Client1',
periodName: 'Q4 2020',
income: 40,
},
{
clientName: 'Client2',
periodName: 'Q1 2020',
income: 15,
},
{
clientName: 'Client2',
periodName: 'Q2 2020',
income: 20,
},
{
clientName: 'Client2',
periodName: 'Q3 2020',
income: 15,
},
{
clientName: 'Client2',
periodName: 'Q4 2020',
income: 30,
}
];
public categories = (groupBy(this.trendItems, [{ field: 'clientName' }]) as GroupResult[])
.map((e) => e.value);
public groupedTrendsByPeriod = groupBy(this.trendItems, [{ field: 'periodName' }]) as GroupResult[];
public labelVisual(e: { dataItem: TrendItem }) {
return `$${e.dataItem.income}\r\n${e.dataItem.periodName}`;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处尝试此代码。
所以我的问题是如何像第一张图片一样显示每个项目的多个标签?
我目前的障碍。
<kendo-chart-series-item-labels>。仅渲染其中一个,其余部分将被忽略。您可以使用 KendoChartComponent 的注释功能。
您可以在此处查看实现。
您添加noteTextField="periodName" [notes]="notesOptions"到您的kendo-chart-series-item元素中。
您添加[labels]="labelOptions"到您的kendo-chart-category-axis-item元素中。
您将以下内容添加到您的组件中:
public notesOptions = {
position: 'bottom',
icon: {
visible: false,
},
label: {
color: 'black',
content: (e) => e.dataItem.periodName,
font: "12px Arial",
margin: -30,
},
line: {
width: 0,
},
};
public labelOptions = {
margin: {
top: 10,
},
};
Run Code Online (Sandbox Code Playgroud)
将labelVisual函数返回值更改为`$${e.dataItem.income}\`。
注意:可以执行一些更改并仍然提供所需的设计,因此如果某些内容不完全正确,则可能可以修复。
| 归档时间: |
|
| 查看次数: |
1977 次 |
| 最近记录: |