angular - 如何在圆环图中的值上设置最小宽度?
问题描述
我在我的 Angular 项目中使用了ng2-charts库,它工作得很好,但是当你在圆环图中添加许多值时,尤其是小的值,它就会变得非常小(见下图)。为了使其更具可读性,我想在值上设置一个最小宽度,使较大的值更小一些。这可能吗?
解决方案
您可以在一个独特的甜甜圈切片中聚合所有低值,例如值 < 50。
然后当用户点击这个聚合切片时,可以显示另一个甜甜圈,所有值 < 50。
为此,请在您的元素上使用(chartClick)
事件。baseChart
<div class="chart-wrapper">
<canvas baseChart height="300" [options]="mainOptions"
[data]="mainData" [chartType]="'doughnut'"
(chartClick)="chartClicked($event)">
</canvas>
</div>
<div class="chart-wrapper" *ngIf="zoomEnabled">
<canvas baseChart height="300" [options]="zoomOptions"
[data]="zoomData" [chartType]="'doughnut'"
(chartClick)="chartClicked($event)">
</canvas>
<button *ngIf="zoomEnabled" (click)="disableZoom()">Hide</button>
</div>
zoomEnabled
当用户单击Others
slice时,将标志设置为 true:
chartClicked({ event, active }: { event: MouseEvent; active: {}[] }): void {
const chart = (active[0] as any)._chart;
const activePoints = chart.getElementAtEvent(event);
const clickedElementIndex = activePoints[0]._index;
if (clickedElementIndex === 0) {
this.enableZoom();
}
}
PS:在这里,我们认为 slice withindex: 0
是具有较低值的聚合切片。但是你可以想象一个更复杂的带有标签的场景......
推荐阅读
- ios - Xcode firebase 云消息在添加一行代码后停止工作,即使在还原更改后也无法修复
- reactjs - React/TS/material-ui 使用变量作为网格属性的值会引发错误:“没有重载匹配”和“类型'数字'不可分配给类型......”
- python - WebDriverWait.until - javascript 错误:无法读取未定义的属性“获取”
- r - 如何在 R 中创建分位数,取决于家庭收入和家庭支出
- python - 使用 PyOpenGL,如何在 .obj 文件上应用实例化?
- flutter - AnimatedCrossFade 不能与 SingleChildScrollView 一起正常工作
- python - 如果使用 sql 查询 python 对空结果不起作用
- flutter - 颤振旋转 XY 图像
- mysql - 如果数据存在,则加入多个表
- apache-spark - 避免在没有缓存的情况下对 Spark 中的代码进行延迟评估