为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 chartJs 自定义图表?

如何使用 chartJs 自定义图表?

当年话下 2022-06-16 16:28:28
我正在尝试制作像这个屏幕截图这样的图表。现在我使用chartjs如下: -<!DOCTYPE html><html><head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=Edge">    <meta name="viewport" content="width=device-width, initial-scale=1">    <title>area > boundaries | Chart.js sample</title>    <link rel="stylesheet" type="text/css" href="https://www.chartjs.org/samples/latest/style.css">    <script src="https://www.chartjs.org/dist/2.9.3/Chart.min.js"></script>    <script src="https://www.chartjs.org/samples/latest/utils.js"></script>    <script src="https://www.chartjs.org/samples/latest/charts/area/analyser.js"></script></head><body>    <div class="content">        <div class="wrapper col-2"><canvas id="chart"></canvas></div>    </div>    <script>        var presets = window.chartColors;        var utils = Samples.utils;        var inputs = {            min: 0,            max: 100,            count: 8,            decimals: 2,            continuity: 1        };        function generateData(config) {            return utils.numbers(Chart.helpers.merge(inputs, config || {}));        }        function generateLabels(config) {            return utils.months(Chart.helpers.merge({                count: inputs.count,                section: 3            }, config || {}));        }        var options = {            maintainAspectRatio: false,            spanGaps: false,            elements: {                line: {                    tension: 0.000001                }            },            plugins: {                filler: {                    propagate: false                }            },            scales: {                xAxes: [{                    ticks: {                        autoSkip: false,                        maxRotation: 0                    }                }]            }        };有一个问题,这与屏幕截图不完全一样,我怎样才能使它与屏幕截图中的一样?
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

您正在正确使用图表,并且正在使用适当的type: line. 您只需设置正确的值即可完全按照图像显示图表。我希望这能给你一个想法


var presets = window.chartColors;

        var utils = Samples.utils;

        var inputs = {

            min: 0,

            max: 100,

            count: 8,

            decimals: 2,

            continuity: 1

        };


        function generateData(config) {

            return utils.numbers(Chart.helpers.merge(inputs, config || {}));

        }


        function generateLabels(config) {

            return utils.months(Chart.helpers.merge({

                count: inputs.count,

                section: 3

            }, config || {}));

        }


        var options = {

            maintainAspectRatio: false,

            spanGaps: false,

            elements: {

                line: {

                    tension: 0.000001

                }

            },

            plugins: {

                filler: {

                    propagate: false

                }

            },

            scales: {

                xAxes: [{

                    ticks: {

                        autoSkip: false,

                        maxRotation: 0

                    }

                }]

            }

        };


        [false, 'origin', 'start', 'end'].forEach(function(boundary, index) {

              const canvas = document.getElementById('chart-' + index);

              if(canvas)

              {

               utils.srand(8);

               var ctx = canvas.getContext('2d');

              new Chart(ctx, {

                  type: 'line',

                  data: {

                      labels: generateLabels(),

                      datasets: [{

                          backgroundColor: utils.transparentize(presets.red),

                          borderColor: presets.red,

                          //data: generateData(),

                          data: [0, 0, 40, 0,0, 50, 0, 0, 0],

                          label: 'Dataset',

                          fill: boundary

                      }]

                  },

                  options: Chart.helpers.merge(options, {

                      title: {

                          text: 'fill: ' + boundary,

                          display: true,

                      }

                  })

              });

            }

        });

<!DOCTYPE html>

<html>


<head>

    <meta charset="utf-8">

    <meta http-equiv="X-UA-Compatible" content="IE=Edge">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>area > boundaries | Chart.js sample</title>

    <link rel="stylesheet" type="text/css" href="https://www.chartjs.org/samples/latest/style.css">

    <script src="https://www.chartjs.org/dist/2.9.3/Chart.min.js"></script>

    <script src="https://www.chartjs.org/samples/latest/utils.js"></script>

    <script src="https://www.chartjs.org/samples/latest/charts/area/analyser.js"></script>

</head>


<body>

    <div class="content">

        <div class="wrapper col-2"><canvas id="chart-2"></canvas></div>

    </div>


  

</body>


</html>


查看完整回答
反对 回复 2022-06-16
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信