添加阴影Chart.js

时间:2017-09-09 10:11:59

标签: javascript jquery css chart.js

我使用的是最后一个版本的chart.js,我想为每个栏添加一个阴影

这是代码

的示例
<canvas id="myChart" width="400" height="400"></canvas> 

<script> var ctx = document.getElementById("myChart").getContext('2d'); 
var myChart = new Chart(ctx, { 
type: 'bar', 
data: { labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"], 
datasets: [{ label: '# of Votes', data: [12, 19, 3, 5, 2, 3], 
backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255,99,132,1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }] }, options: { scales: { yAxes: [{ ticks: { beginAtZero:true } }] } } }); </script>

2 个答案:

答案 0 :(得分:1)

这适用于折线图。

[编辑...]

&#13;
&#13;
Chart.types.Line.extend({
  name: "LineAlt",
  initialize: function () {
    Chart.types.Line.prototype.initialize.apply(this, arguments);

    var ctx = this.chart.ctx;
    var originalStroke = ctx.stroke;
    ctx.stroke = function () {
      ctx.save();
      ctx.shadowColor = '#000';
      ctx.shadowBlur = 10;
      ctx.shadowOffsetX = 8;
      ctx.shadowOffsetY = 8;
      originalStroke.apply(this, arguments)
      ctx.restore();
    }
  }
});

var data = {
  labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
  datasets: [
    {
      fillColor: "rgba(255, 99, 132, 0.2)",
      strokeColor: "rgba(54, 162, 235, 0.2)",
      pointColor: "rgba(255, 206, 86, 0.2)",
      pointStrokeColor: "#fff",
      pointHighlightFill: "#fff",
      pointHighlightStroke: "rgba(75, 192, 192, 0.2)",
      data: [12, 19, 3, 5, 2, 3]
    }
  ]
};

var ctx = document.getElementById("myChart").getContext("2d");
var canvas = new Chart(ctx).LineAlt(data, {
  datasetFill: false
});
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js"></script>
<canvas id="myChart" width="600" height="300"></canvas>
&#13;
&#13;
&#13;

欣赏是否有用

答案 1 :(得分:0)

基于此answer,我创建了一个可运行的代码段,说明了如何创建带有阴影的条形图。

const dataset = [40, 80, 50, 60, 70];
const offset = 8;

Chart.pluginService.register({
  afterUpdate: function(chart) {
      var metaData = chart.getDatasetMeta(0).data;
      for (var i = 0; i < metaData.length; i++) {
          var model = metaData[i]._model;
          model.x += offset;
          model.controlPointNextX += offset;
          model.controlPointPreviousX += offset;
      }
  }
});

var data = {
    labels: ["A", "B", "C", "D", "E"],
    datasets: [{
            backgroundColor: [
              'rgba(255, 99, 132)',
              'rgba(255, 206, 86)',
              'rgba(54, 162, 235)',              
              'rgba(75, 192, 192)',
              'rgba(153, 102, 255)'
              ],
            borderWidth: 1,
            data: dataset,
            xAxisID: "bar-x-axis1",
            categoryPercentage: 0.5,
            barPercentage: 0.5,
        },
        {
            backgroundColor: 'rgba(0, 0, 0, 0.2)',
            data: dataset.map(v => v + offset),
            xAxisID: "bar-x-axis2",
            categoryPercentage: 0.5,
            barPercentage: 0.5
        }
    ]
};

var options = {  
    legend: {
        display: false
    },
    tooltips: {
        enabled: false
    },
    scales: {        
        xAxes: [
            {
                id: "bar-x-axis2"
            },
            {
                id: "bar-x-axis1",              
                offset: true,
                display: false
           }
        ],
        yAxes: [{
            id: "bar-y-axis1",
            ticks: {
                beginAtZero: true,
                stepSize: 50
            }
        }]
    }
};

var ctx = document.getElementById("myChart").getContext("2d");
var myBarChart = new Chart(ctx, {
    type: 'bar',
    data: data,
    options: options
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
<canvas id="myChart" height="60"></canvas>