首先,该问题出现在使用 ng2-charts 库的 Angular 8 项目中(https://valor-software.com/ng2-charts/ https://valor-software.com/ng2-charts/),据我所知,该项目是 Chart.js 的包装器。
目前我有一个条形图,我想在其中渲染数百列。一开始它运行良好,但是列无法显示在某个索引之上。
我为列设置了一个工具提示,当我将鼠标悬停在列应该所在的位置时,工具提示就会显示,这意味着该列实际上在那里,我们只是看不到它。问题也不在于该值比前一个列小得多,而是根据列的值对列进行排序,并且第一个不可见列的高度应与前一个列的高度大致相同。
数据集似乎也不是问题的原因。我根据名称而不是值对数据进行了重新排序,即便如此,也只显示了前 183 列。
My HTML:
<div class="chart-wrapper"
[ngStyle]="{width: 150 + (data.length * 35) + 'px'}">
<canvas baseChart
[datasets]="barCharDataset"
[labels]="barChartLabels"
[legend]="barChartLegend"
[options]="barChartOptions"
[chartType]="barChartType"
(chartClick)="chartClicked($event)"></canvas>
</div>
包装器(和图表)的宽度基于我想要显示的列数。如果我将乘数从 35 像素减少到 20,那么突然会渲染所有(当前)300 列,但图表本身看起来不太好。如果我将其设置为 25,那么最后几列仍然不会显示。
由于我想要显示的列数稍后会增加,因此将宽度设置为仅适用于现在的值对我来说是不可接受的。
图表配置:
this.barChartOptions = {
animation: {
duration: 0
},
hover: {
animationDuration: 0
},
responsiveAnimationDuration: 0, // animation duration after a resize
responsive: true,
maintainAspectRatio: false
}
也许解决方案就像设置一个参数一样简单,但我找不到一个看起来相关并且更改它有效的解决方案(尝试修改 barThickness 和 maxBarThickness 等,但没有运气)。
编辑:StackBlitz 可用示例:https://stackblitz.com/edit/angular-wrvgme https://stackblitz.com/edit/angular-wrvgme