ng2-charts - 如何标记 y 轴?

ng2-charts - How to label y axis?

无法弄清楚如何使用 ng2-charts 标记 y 轴。文档似乎只有关于标记 x 轴的信息,直接使用 charts.js 方法没有结果。

表格component.ts:

  public barChartOptions = {
    scaleShowVerticalLines: false,
    maintainAspectRatio: false,

    yAxes: [{
      scaleLabel: {
        display: true,
        labelString: 'Frequency Rate'
      }}]
    //responsive: true
  };

HTML:

<script src="node_modules/chart.js/src/chart.js"></script>

<!--<button mat-button mat-raised-button color="primary" (click)="populate_data()">Update</button>-->

<div>
  <canvas baseChart class="chart" height ='450'

        [datasets]="barChartData"
        [labels]="barChartLabels"
        [options]="barChartOptions"
        [legend]="barChartLegend"
        [chartType]="barChartType">

      </canvas>
    </div>

ng2-charts 是原始 chart.js 库的包装器 angular 库。

chart.js中的文档更详细:https://www.chartjs.org/docs/latest/charts/bar.html

how to label y axis using ng2-charts

在 chart.js 中,y-axis 的报价是根据您推入 ChartDataSets[]

的数据自动确定的

例如最大值 y-axis 值为 99

public barChartData: ChartDataSets[] = [
    { data: [5, 1, 99], label: 'Series A' },
    { data: [6, 10, 45], label: 'Series B' }
];

要控制 y-axis 刻度的外观,请参阅此文档: https://www.chartjs.org/docs/latest/axes/cartesian/linear.html

所以如果你想控制 tick 的 stepSize 以 2 为增量,你可以这样做:

yAxes: [{
   ticks: {
      stepSize: 2,
      beginAtZero: true
   }
}]

如果您想将最大 y-axis 刻度标签设置为始终为 100,您将像这样定义您的选项:

yAxes: [{
   ticks: {
      max: 100
   }
}]

要标记您的 y-axis:

public barChartOptions: ChartOptions = { // import { ChartOptions } from 'chart.js'; 
   ...
   responsive: true,
   maintainAspectRatio: false,
   ...
   scales: { //you're missing this
      yAxes: [{
         scaleLabel: {
            display: true,
            labelString: 'Frequency Rate'
         }
      }]
   }//END scales
};

这应该会有帮助,不要忘记为每个设置“display:true”。对我有用

ChartOptions: any = {
 responsive: true,
 scales: {
  yAxes: [
   {
    display: true,
    scaleLabel: {
     display: true,
     labelString: "Number of Reads",
    },
   },
  ],
  xAxes: [
   {
    scaleLabel: {
     display: true,
     labelString: "Date",
    },
   },
  ],
 },
};