如何更改图表JS中的列颜色

时间:2019-10-04 03:55:02

标签: javascript chart.js

链接codepen:https://codepen.io/01202581905/pen/gOOYzOZ

var ctx = document.getElementById('myChart').getContext('2d');
var chart = new Chart(ctx, {
  // The type of chart we want to create
  type: 'bar',

  // The data for our dataset
  data: {
    labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
    datasets: [{
      label: 'My First dataset',
      backgroundColor: 'rgb(255, 99, 132)',
      borderColor: 'rgb(255, 99, 132)',
      data: [0, -10, 35, 2, -19, 30, 15]
    }]
  },

  // Configuration options go here
  options: {}
});
<canvas id="myChart"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>

我想在列的值为0时更改列的颜色并更改col的位置。谢谢

我想要的结果: enter image description here

2 个答案:

答案 0 :(得分:0)

我希望我能解决旅游问题:

function updateChart(chart){
    let val = 2;
    let updatedValues = [];
    chart.data.datasets[0].data.forEach((e,i)=>{
    if(e===0){
      updatedValues.push('green');
      chart.data.datasets[0].data[i] = val;
      chart.data.datasets.push({data:
        Array.from({length:chart.data.datasets[0].data.length},function(el,j){
            if(i===j) return -val
        })})
    } else {
        updatedValues.push(chart.data.datasets[0].backgroundColor)
    }

  })
  chart.data.datasets.forEach(e=>{
    e.backgroundColor = updatedValues;
  })

  chart.update()
}

然后进行测试:https://jsfiddle.net/7Lbjmw6r/

答案 1 :(得分:0)

嗨,您必须在数据集的backgroundColor-Parameter中提供一个数组:请参见此处:

var labels = ["001", "002", "003", "004", "005", "006", "007"];
var data = [20, 59, 80, 81, 56, 55, 40];
for (var i = 0, len = labels.length; i < len; i++) {
   **background_colors**.push(getRandomColor());
}

var barChartData = {
  labels: labels,
  datasets: [{
    label: "My First dataset",
    fillColor: "rgba(220,220,220,0.5)", 
    strokeColor: "rgba(220,220,220,0.8)", 
    highlightFill: "rgba(220,220,220,0.75)",
    highlightStroke: "rgba(220,220,220,1)",
    backgroundColor: **background_colors**,
    data: data
  }]
};

这应该有效!