简体   繁体   中英

ChartJS Annotation line on stacked bar chart

I cannot get the annotation line to work on a stacked Bar Chart.

Example JS Fiddle: https://jsfiddle.net/cledwyn/rd5q6Lsz/10/

I have the standard Annotation per https://www.chartjs.org/chartjs-plugin-annotation/latest/samples/charts/bar.html

const annotation2 = {
  type: 'line',
  scaleID: 'x',
  borderWidth: 3,
  borderColor: 'black',
  value: 8,
  label: {
    rotation: 'auto',
    position: 'start',
    backgroundColor: 'black',
    content: 'Line at x=Label 5',
    enabled: true
  }
};

but when I stack the bar charts

      scales: {
        xAxes: { stacked: true },
        yAxes: { stacked: true }
      },

then the annotation line just goes from one corner of the chart to the other.

When running your JSFiddle , you can see the following warning on the console.

"No scale found with id 'x' for annotation 'annotation2'"

Therefore, changing scales.xAxes to scales.x should solve part of your problem.

scales: {
  x: { stacked: true },
  y: { stacked: true }
}

You'll further have to add missing labels to data.labels and adjust annotation2.value .

Please take a look at your amended code below and see how it works.

 const labels = ['Label 1', 'Label 2', 'Label 3', 'Label 4', 'Label 5']; const data = { labels: labels, datasets: [{ label: 'one', data: [14, 21, 4, 5, 7], backgroundColor: 'rgb(255, 99, 132)' }, { label: 'two', data: [1, 3, 2, 4, 5], backgroundColor: 'rgb(255, 199, 132)' }, { label: 'three', data: [7, 1, 9, 6, 7], backgroundColor: 'rgb(255, 99, 32)' }] }; const annotation2 = { type: 'line', scaleID: 'x', borderWidth: 3, borderColor: 'black', value: 4, label: { rotation: 'auto', position: 'start', backgroundColor: 'black', content: 'Line at x=Label 5', enabled: true } }; const config = { type: 'bar', data: data, options: { plugins: { annotation: { annotations: { annotation2, } } }, scales: { x: { stacked: true }, y: { stacked: true } }, }, }; const chart = new Chart('chart', config);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.8.0/chart.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/chartjs-plugin-annotation/1.4.0/chartjs-plugin-annotation.min.js"></script> <canvas id="chart" height="110"></canvas>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM