我正在使用 Chart.js 3.6.2 在 Angular 10 中创建图表。
我正在努力解决的一些问题:
我的目标就像这个图像(其他人使用旧的 Chart.js 2 创建的),最好具有相同数量的水平网格线:
我创建了一个简单的对数图表,每个数据集有 3 个数据点。相关代码如下所示以及this Stackblitz中。评论显示了我尝试过的一些不同的事情。 请注意,此代码有第二个数据集,已被注释掉。取消注释此数据集会导致 Y 轴发生变化。
<div style="padding: 1rem">
<canvas id="myChart" width="400" height="400"></canvas>
</div>
export class AppComponent implements OnInit {
@ViewChild('chartRef', { static: true }) chartRef: ElementRef;
chart: Chart;
ngOnInit() {
this.createChart();
}
private get ctx(): CanvasRenderingContext2D {
return (this.chartRef.nativeElement as HTMLCanvasElement).getContext(
'2d'
) as CanvasRenderingContext2D;
}
private createChart(): void {
if (this.chart) {
this.chart.destroy();
}
if (!this.ctx) {
return;
}
const myChart = new Chart(this.ctx, {
type: 'line',
data: {
labels: ['Red', 'Blue', 'Yellow'],
datasets: [
{
label: 'Blue Data',
data: [0, 11.1, 20],
borderColor: '#2184c6',
},
/* MARK COMMENT ONE: Uncommenting this changes the Y-axis */
// {
// label: 'Orange Data',
// data: [0, 0.1, 85],
// borderColor: '#ff6f20',
// },
],
},
options: {
scales: {
y:
/** MARK COMMENT TWO:
Uncommenting array brackets ("[" and "]") will cause non-logarithmic ticks (linear tick behavior), but starts with "0". I want to start with zero, with log ticks.
*/
// [
{
type: 'logarithmic',
bounds: 'ticks',
// NOT A PROP FOR type: "logarithmic"
// beginAtZero: true, //
min: 0,
max: 100, // required to make this always go to 100
// grace: 10,
// suggestedMax: 100,
ticks: {
display: true,
// max: 100,
// min: 20,
// maxTicksLimit: 101,
},
},
// ]
},
},
});
}
}
无法使用 Chartjs-3 修复。 “解决方案”是暂时继续使用chartjs-2。
尽管在 ChartJS-2 中可用的这些属性/功能已在 ChartJS-3 中删除,但根据下面列出的错误报告,似乎有计划在即将推出的 V4 中解决这些问题。
以下是来自 ChartJS github 存储库(版本 3)的一些相关错误报告的链接: