Bagaimana cara menyesuaikan grafik menggunakan chartJs?

Saya mencoba membuat grafik seperti tangkapan layar ini.

masukkan deskripsi gambar di sini

Sekarang saya menggunakan chartjs seperti yang diberikan di bawah ini:-

<!DOCTYPE html>
<html lang="en-US">

<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
                    }
                }]
            }
        };

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

            utils.srand(8);

            new Chart('chart', {
                type: 'line',
                data: {
                    labels: generateLabels(),
                    datasets: [{
                        backgroundColor: utils.transparentize(presets.red),
                        borderColor: presets.red,
                        data: generateData(),
                        label: 'Dataset',
                        fill: boundary
                    }]
                },
                options: Chart.helpers.merge(options, {
                    title: {
                        text: 'fill: ' + boundary,
                        display: true,
                    }
                })
            });
        });
    </script>
</body>

</html>

Ada masalah ini tidak persis seperti tangkapan layar, bagaimana cara membuatnya sama seperti di tangkapan layar?


person Rohit Verma    schedule 06.04.2020    source sumber


Jawaban (1)


Anda menggunakan grafik dengan benar, dan Anda menggunakan type: line yang sesuai. Yang harus Anda lakukan untuk menampilkan bagan persis seperti gambarnya adalah menetapkan nilai yang tepat. Saya harap ini memberi Anda ide

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 lang="en-US">

<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>

person Scaramouche    schedule 06.04.2020
comment
Terima kasih @Scaramouche atas usaha Anda. - person Rohit Verma; 06.04.2020
comment
bagaimana cara mengurangi dengan segitiga? seperti yang diberikan dalam tangkapan layar pertanyaan. - person Rohit Verma; 08.04.2020
comment
@RohitVerma itu bergantung pada jumlah nilai yang Anda plot di X, dalam hal ini Anda bisa naik hingga 12 karena Anda menggunakan bulan, semakin banyak nilai yang Anda plot di X, semakin tipis segitiganya - person Scaramouche; 08.04.2020
comment
sebenarnya saya hanya perlu 10-12 dengan mengurangi dengan segitiga seperti yang diberikan pada tangkapan layar atas, apakah mungkin? - person Rohit Verma; 09.04.2020