วิธีแสดงค่าข้อมูลบน Chart.js


118

ฉันอยากถามว่าเป็นไปได้ไหมโดยใช้ Chart.js เพื่อแสดงค่าข้อมูล? ฉันต้องการพิมพ์กราฟ

ขอบคุณสำหรับคำแนะนำใด ๆ


กราฟของฉันทำงานได้อย่างสมบูรณ์ .. ฉันแค่ต้องการแสดงค่าข้อมูลในแผนภูมิ LineBar ของฉัน .. จากนั้นฉันก็สามารถพิมพ์กราฟของฉันได้ .. เพราะตอนนี้ฉันสามารถแสดงค่าข้อมูลได้ด้วยเหตุการณ์ของเมาส์
FuSsA

คำตอบ:


138

การแก้ไขล่าช้า:มีปลั๊กอินอย่างเป็นทางการสำหรับ Chart.js 2.7.0+เพื่อทำสิ่งนี้: https://github.com/chartjs/chartjs-plugin-datalabels

คำตอบเดิม:

คุณสามารถวนซ้ำจุด / แท่งบน AnimationComplete และแสดงค่า


ดูตัวอย่าง

ใส่คำอธิบายภาพที่นี่


HTML

<canvas id="myChart1" height="300" width="500"></canvas>
<canvas id="myChart2" height="300" width="500"></canvas>

สคริปต์

var chartData = {
    labels: ["January", "February", "March", "April", "May", "June"],
    datasets: [
        {
            fillColor: "#79D1CF",
            strokeColor: "#79D1CF",
            data: [60, 80, 81, 56, 55, 40]
        }
    ]
};

var ctx = document.getElementById("myChart1").getContext("2d");
var myLine = new Chart(ctx).Line(chartData, {
    showTooltips: false,
    onAnimationComplete: function () {

        var ctx = this.chart.ctx;
        ctx.font = this.scale.font;
        ctx.fillStyle = this.scale.textColor
        ctx.textAlign = "center";
        ctx.textBaseline = "bottom";

        this.datasets.forEach(function (dataset) {
            dataset.points.forEach(function (points) {
                ctx.fillText(points.value, points.x, points.y - 10);
            });
        })
    }
});

var ctx = document.getElementById("myChart2").getContext("2d");
var myBar = new Chart(ctx).Bar(chartData, {
    showTooltips: false,
    onAnimationComplete: function () {

        var ctx = this.chart.ctx;
        ctx.font = this.scale.font;
        ctx.fillStyle = this.scale.textColor
        ctx.textAlign = "center";
        ctx.textBaseline = "bottom";

        this.datasets.forEach(function (dataset) {
            dataset.bars.forEach(function (bar) {
                ctx.fillText(bar.value, bar.x, bar.y - 5);
            });
        })
    }
});

ซอ - http://jsfiddle.net/uh9vw0ao/


จะเกิดอะไรขึ้นถ้าฉันมีแผนภูมิเส้นสองเส้นในแผนภูมิเดียวกัน
FuSsA

1
ด้านบนจะยังคงแสดงค่า แต่คุณอาจเห็นการทับซ้อนกันหากจุดอยู่ใกล้กันเกินไป แต่คุณสามารถใส่ตรรกะเพื่อเปลี่ยนตำแหน่งค่าได้ตลอดเวลา เช่น - jsfiddle.net/hh719qexหากคุณมีเครื่องพิมพ์สี หากคุณมีเพียง 2 ซีรีส์คุณสามารถทำสิ่งต่างๆเช่นการตั้งค่า textBaseline ให้แตกต่างกันหากจุด 2 จุดอยู่ใกล้กัน 2 จุด
potatopeelings

4
นี่เป็นสำหรับ v1.0.2 วิธีการทำสิ่งนี้สำหรับ v2.1.3 โครงสร้างออบเจ็กต์แตกต่างกันในรุ่นที่ใหม่กว่า
techie_28

2
@potatopeelings ฉันใช้การonCompleteโทรกลับที่นี่ แต่มันก็เริ่มทำงานเมื่อเมาส์โอเวอร์อยู่บนแถบของแผนภูมิทำให้ตัวเลขกะพริบเนื่องจากการวาดใหม่จะเหมือนกันonAnimationCompleteหรือไม่ถ้า? ฉันไม่สามารถใช้การโทรกลับนี้กับรหัสแผนภูมิที่มีอยู่ (ดูvar chartBarที่ด้านล่างpastebin.com/tT7yTkGh )
techie_28

1
ฉันต้องการทั้งเคล็ดลับเครื่องมือและข้อมูลที่ด้านบนของแท่งในกราฟของฉัน เมื่อปลายเครื่องมือแสดงข้อมูลที่ด้านบนของแถบจะเปลี่ยนเป็นสีขาวซึ่งมองเห็นได้ในปลายเครื่องมือโปร่งใสของฉัน ฉันจะแก้ไขปัญหานี้ได้อย่างไร?
LJP

82

นี่คือเวอร์ชันอัปเดตสำหรับ Chart.js 2.3

23 ก.ย. 2016: แก้ไขโค้ดของฉันให้ทำงานกับ v2.3 สำหรับทั้งประเภทบรรทัด / บาร์

สำคัญ:แม้ว่าคุณจะไม่ต้องการภาพเคลื่อนไหว แต่อย่าเปลี่ยนตัวเลือกระยะเวลาเป็น 0 มิฉะนั้นคุณจะได้รับchartInstance.controller เป็นข้อผิดพลาดที่ไม่ได้กำหนด

var chartData = {
    labels: ["January", "February", "March", "April", "May", "June"],
        datasets: [
            {
                fillColor: "#79D1CF",
                strokeColor: "#79D1CF",
                data: [60, 80, 81, 56, 55, 40]
            }
        ]
    };

var opt = {
    events: false,
    tooltips: {
        enabled: false
    },
    hover: {
        animationDuration: 0
    },
    animation: {
        duration: 1,
        onComplete: function () {
            var chartInstance = this.chart,
                ctx = chartInstance.ctx;
            ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
            ctx.textAlign = 'center';
            ctx.textBaseline = 'bottom';

            this.data.datasets.forEach(function (dataset, i) {
                var meta = chartInstance.controller.getDatasetMeta(i);
                meta.data.forEach(function (bar, index) {
                    var data = dataset.data[index];                            
                    ctx.fillText(data, bar._model.x, bar._model.y - 5);
                });
            });
        }
    }
};
 var ctx = document.getElementById("Chart1"),
     myLineChart = new Chart(ctx, {
        type: 'bar',
        data: chartData,
        options: opt
     });
<canvas id="myChart1" height="300" width="500"></canvas>


ฉันได้รับ "Uncaught TypeError: ไม่สามารถอ่านคุณสมบัติ" 0 "ของที่ไม่ได้กำหนด" เมื่อลองสิ่งนี้กับกราฟแท่ง แท่งใช้อย่างอื่นที่ไม่ใช่ "dataset.metaData [i] ._ model" ไหม
Chris Ensell

จริงๆแล้วมันคือ var model = dataset._meta [i] .data [0] ._ model;
Flanamacca

นั่นไม่ใช่ความจริงทั้งหมด ฉันยังคงได้รับข้อยกเว้น จะพยายามคิดออก
Val

var model = dataset._meta [0] .data [i] ._ model; จริง
brian

2
ดูเหมือนจะไม่ง่ายเหมือน _meta [0] ในความเป็นจริงวัตถุ _meta ไม่ใช่อาร์เรย์ แต่มีองค์ประกอบเดียวที่มีตัวเลขเป็นกุญแจสำคัญ ฉันไม่สามารถหาเหตุผลที่อยู่เบื้องหลังว่าตัวเลขจะเป็นเท่าใดฉันจึงใช้องค์ประกอบแรกโดยดูในรายการคีย์ดังนี้: var model = dataset._meta [Object.keys (dataset._meta) [0]] .data [i] ._ แบบ;
IrishDubGuy

34

ตัวเลือกภาพเคลื่อนไหวนี้ใช้ได้กับ 2.1.3 บนแผนภูมิแท่ง

คำตอบ @Ross แก้ไขเล็กน้อย

animation: {
duration: 0,
onComplete: function () {
    // render the value of the chart above the bar
    var ctx = this.chart.ctx;
    ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, 'normal', Chart.defaults.global.defaultFontFamily);
    ctx.fillStyle = this.chart.config.options.defaultFontColor;
    ctx.textAlign = 'center';
    ctx.textBaseline = 'bottom';
    this.data.datasets.forEach(function (dataset) {
        for (var i = 0; i < dataset.data.length; i++) {
            var model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model;
            ctx.fillText(dataset.data[i], model.x, model.y - 5);
        }
    });
}}

3
ฉันต้องตั้งค่าhover: {animationDuration: 0}ให้หยุดการเคลื่อนไหวของป้ายกำกับเมื่อวางเมาส์เหนือ
iamyojimbo

1
นอกจากนี้โปรดทราบว่าหากคุณต้องการซ่อนป้ายกำกับเมื่อคุณซ่อนบางสิ่งจากคำอธิบายแผนภูมิคุณต้องเพิ่มสิ่งต่อไปนี้ก่อนลูป forEach:.filter(dataset => !dataset._meta[0].hidden)
iamyojimbo

1
วิธีนี้จะทำให้ค่าถูกตัดออกหากไม่มีที่ว่างเพียงพอเหนือแถบ
Janne Annala

2
ไม่อยากจะเชื่อเลยว่ามันน่าเกลียดขนาดนั้น ^^ เก่งมาก
La masse

ดูดี แต่จะกะพริบเมื่อวาดคำแนะนำเครื่องมือใหม่ ยังไม่ประมวลผลการชนกันบนแผนภูมิรวมและป้ายกำกับข้อมูลสะสมสำหรับแถบแบบเรียงซ้อนซึ่งแน่นอนว่าจะต้องมีการเข้ารหัสมากขึ้น
dma_k

22

ฉันคิดว่าตัวเลือกที่ดีที่สุดในการทำสิ่งนี้ใน chartJS v2.x คือการใช้ปลั๊กอินดังนั้นคุณจึงไม่มีโค้ดจำนวนมากในตัวเลือก นอกจากนี้ยังป้องกันไม่ให้ข้อมูลหายไปเมื่อวางเมาส์เหนือแถบ

กล่าวคือใช้รหัสนี้ซึ่งลงทะเบียนปลั๊กอินที่เพิ่มข้อความหลังจากวาดแผนภูมิ

Chart.pluginService.register({
    afterDraw: function(chartInstance) {
        var ctx = chartInstance.chart.ctx;

        // render the value of the chart above the bar
        ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, 'normal', Chart.defaults.global.defaultFontFamily);
        ctx.textAlign = 'center';
        ctx.textBaseline = 'bottom';

        chartInstance.data.datasets.forEach(function (dataset) {
            for (var i = 0; i < dataset.data.length; i++) {
                var model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model;
                ctx.fillText(dataset.data[i], model.x, model.y - 2);
            }
        });
  }
});

Chart.plugins.register ({
hasentopf

ฉันต้องใช้Chart.defaults.global.tooltips.enabled = false;. ปัญหาในการแก้ปัญหานั้นคือafterDrawฟังก์ชันถูกเรียกหลายร้อยครั้งซึ่งอาจสร้างโอเวอร์เฮดของ CPU ยังคงเป็นคำตอบเดียวสำหรับตอนนี้โดยไม่กระพริบตา หากคุณจำเป็นต้องมีการแสดงผลที่ดีกว่าสำหรับhorizontalBarแผนภูมิการใช้งานและctx.textAlign = 'left'; ctx.textBaseline = 'middle'; ctx.fillText(dataset.data[i], model.x+5, model.y);
KrisWebDev

โซลูชันที่สะอาดกว่าและเป็นโมดูลาร์
hadaytullah

20

จากคำตอบคำตอบของ @ Ross สำหรับ Chart.js 2.0 ขึ้นไปฉันต้องปรับแต่งเล็กน้อยเพื่อป้องกันกรณีเมื่อความสูงของบาร์มาเลือกขอบเขตขนาดเกินไป

ตัวอย่าง

animationแอตทริบิวต์ของตัวเลือกแถบแผนภูมิ:

animation: {
            duration: 500,
            easing: "easeOutQuart",
            onComplete: function () {
                var ctx = this.chart.ctx;
                ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontFamily, 'normal', Chart.defaults.global.defaultFontFamily);
                ctx.textAlign = 'center';
                ctx.textBaseline = 'bottom';

                this.data.datasets.forEach(function (dataset) {
                    for (var i = 0; i < dataset.data.length; i++) {
                        var model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model,
                            scale_max = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._yScale.maxHeight;
                        ctx.fillStyle = '#444';
                        var y_pos = model.y - 5;
                        // Make sure data value does not get overflown and hidden
                        // when the bar's value is too close to max value of scale
                        // Note: The y value is reverse, it counts from top down
                        if ((scale_max - model.y) / scale_max >= 0.93)
                            y_pos = model.y + 20; 
                        ctx.fillText(dataset.data[i], model.x, y_pos);
                    }
                });               
            }
        }

ข้อความกะพริบเมื่อวางเมาส์บนแผนภูมิ .. ฉันพยายามโทรctx.save()ในตอนท้าย แต่ก็ไม่ช่วย
techie_28

การonCompleteโทรกลับจะดำเนินการเมื่อฉันวางเมาส์บนแถบซึ่งทำให้การวาดใหม่ & ข้อความดูเหมือนจะกะพริบสิ่งนี้จะเหมือนonAnimationCompleteกันหรือไม่ฉันไม่สามารถใช้การonAnimationCompleteโทรกลับด้วยรหัสที่มีอยู่ของฉันได้ (ดูvar chartBarที่ด้านล่างของpastebin com / tT7yTkGh
techie_28

เป็นไปได้หรือไม่ที่จะทำเช่นเดียวกันในแผนภูมิวงกลม
ราวีคำภูติ

@RaviKhambhati ใช่คุณสามารถตรวจสอบได้ในคำตอบนี้: stackoverflow.com/a/38797604/6402571
Hung Tran

18

หากคุณใช้ปลั๊กอินchartjs-plugin-datalabelsอ็อบเจ็กต์ตัวเลือกโค้ดต่อไปนี้จะช่วยได้

ตรวจสอบให้แน่ใจว่าคุณนำเข้าimport 'chartjs-plugin-datalabels';ไฟล์ typescript ของคุณหรือเพิ่มการอ้างอิง<script src="chartjs-plugin-datalabels.js"></script>ในไฟล์จาวาสคริปต์ของคุณ

options: {
    maintainAspectRatio: false,
    responsive: true,
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true,
        }
      }]
    },
    plugins: {
      datalabels: {
        anchor: 'end',
        align: 'top',
        formatter: Math.round,
        font: {
          weight: 'bold'
        }
      }
    }
  }

1
คำตอบของคุณง่ายมากและใช้ได้ผลสำหรับฉัน ขอบคุณ. มีความสุขในการเขียนโค้ด
Bandham Manikanta

ทางออกที่ดีจริงๆ! ขอบคุณคนแปลกหน้า: - *
HasBert

7

ตามคำตอบที่ดีนี้ฉันจะใช้ตัวเลือกเหล่านี้สำหรับแผนภูมิแท่ง:

var chartOptions = {
    animation: false,
    responsive : true,
    tooltipTemplate: "<%= value %>",
    tooltipFillColor: "rgba(0,0,0,0)",
    tooltipFontColor: "#444",
    tooltipEvents: [],
    tooltipCaretSize: 0,
    onAnimationComplete: function()
    {
        this.showTooltip(this.datasets[0].bars, true);
    }
};

window.myBar = new Chart(ctx1).Bar(chartData, chartOptions);

แผนภูมิแท่ง

สิ่งนี้ยังคงใช้ระบบคำแนะนำเครื่องมือและข้อดีของเขา (การวางตำแหน่งอัตโนมัติ, เทมเพลต, ... ) แต่ซ่อนการตกแต่ง (สีพื้นหลัง, คาเร็ต, ... )


การนำไปใช้งานอาจเปลี่ยนแปลงได้ขึ้นอยู่กับประเภทแผนภูมิ สำหรับแผนภูมิเส้นเช่นมันแทนthis.datasets[0].points .barsฉันชอบโซลูชันนี้มากกว่าเพราะใช้ระบบคำแนะนำเครื่องมือ
Telmo Marques

1
โซลูชันนี้สำหรับเวอร์ชันก่อนหน้านี้วิธีดำเนินการสำหรับเวอร์ชันล่าสุดคือ 2.1.3 ฉันใช้คำตอบของ potatopeelings & Huang Trang ในการonCompleteโทรกลับของแอนิเมชั่นแต่มันถูกเรียกใช้แม้ว่าจะวางเมาส์เหนือแถบของแผนภูมิซึ่งทำให้ข้อความวาดใหม่และให้เอฟเฟกต์กะพริบที่ไม่ต้องการฉันลองแล้วafterDrawและมันก็เหมือนกันทั้งหมด ไม่ได้เกิดขึ้นในซอที่จัดทำโดย potatopeelings ความคิดใด ๆ โปรด?
techie_28

6

จากตัวอย่าง chart.js (ไฟล์ Chart.js-2.4.0 / samples / data_labelling.html):

`` // กำหนดปลั๊กอินเพื่อจัดเตรียมป้ายกำกับข้อมูล

    Chart.plugins.register({
        afterDatasetsDraw: function(chartInstance, easing) {
            // To only draw at the end of animation, check for easing === 1
            var ctx = chartInstance.chart.ctx;

            chartInstance.data.datasets.forEach(function (dataset, i) {
                var meta = chartInstance.getDatasetMeta(i);
                if (!meta.hidden) {
                    meta.data.forEach(function(element, index) {
                        // Draw the text in black, with the specified font
                        ctx.fillStyle = 'rgb(0, 0, 0)';

                        var fontSize = 16;
                        var fontStyle = 'normal';
                        var fontFamily = 'Helvetica Neue';
                        ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily);

                        // Just naively convert to string for now
                        var dataString = dataset.data[index].toString();

                        // Make sure alignment settings are correct
                        ctx.textAlign = 'center';
                        ctx.textBaseline = 'middle';

                        var padding = 5;
                        var position = element.tooltipPosition();
                        ctx.fillText(dataString, position.x, position.y - (fontSize / 2) - padding);
                    });
                }
            });
        }
    });

``


ฉันเพิ่มบรรทัดนี้เพื่อจัดแนวบนแผนภูมิแท่งแนวนอนโดยทำ if (chart.config.type == "horizontalBar") จากนั้นกำหนดช่องว่างแนวตั้งที่กำหนดเองเป็น 10 เพื่อจัดแนวตรงกลาง
Jeff Beagley

6

ฉันขอแนะนำให้ใช้ปลั๊กอินนี้: https://github.com/chartjs/chartjs-plugin-datalabels

สามารถเพิ่มป้ายกำกับในแผนภูมิของคุณได้ง่ายๆโดยการนำเข้าปลั๊กอินไปยังไฟล์ js เช่น:

import 'chartjs-plugin-datalabels'

และสามารถปรับแต่งได้โดยใช้เอกสารเหล่านี้: https://chartjs-plugin-datalabels.netlify.com/options.html


2
ง่ายที่สุดไม่ต้องใช้ "รหัส" เพียงแค่ปรับแต่งโดยใช้วัตถุ "ตัวเลือก" มาตรฐาน Head-up: เวอร์ชัน Chart.js ขั้นต่ำที่ต้องการคือ2.7.0ฉันอ้างอิง 2.5.0 จาก CDN และไม่มีการเปลี่ยนแปลงใด ๆ ในชาร์ต ...
GBU

@GBU แอตทริบิวต์ตัวเลือกคืออะไร.
Bhimbim

5

แก้ไขคำตอบของ @ ajhuddy นิดหน่อย สำหรับแผนภูมิแท่งเท่านั้น เวอร์ชันของฉันเพิ่ม:

  • ทำให้ภาพเคลื่อนไหวจางลงสำหรับค่า
  • ป้องกันการตัดโดยการกำหนดตำแหน่งค่าภายในแถบหากแถบสูงเกินไป
  • ไม่มีการกะพริบ

ตัวอย่าง

ข้อเสีย: เมื่อวางเมาส์เหนือแถบที่มีค่าอยู่ข้างในค่าอาจดูเป็นรอยหยักเล็กน้อย ฉันไม่พบวิธีแก้ไขปิดใช้งานเอฟเฟกต์โฮเวอร์ นอกจากนี้ยังอาจต้องปรับแต่งขึ้นอยู่กับการตั้งค่าของคุณเอง

การกำหนดค่า:

bar: {
  tooltips: {
    enabled: false
  },
  hover: {
    animationDuration: 0
  },
  animation: {
    onComplete: function() {
      this.chart.controller.draw();
      drawValue(this, 1);
    },
    onProgress: function(state) {
      var animation = state.animationObject;
      drawValue(this, animation.currentStep / animation.numSteps);
    }
  }
}

ผู้ช่วยเหลือ:

// Font color for values inside the bar
var insideFontColor = '255,255,255';
// Font color for values above the bar
var outsideFontColor = '0,0,0';
// How close to the top edge bar can be before the value is put inside it
var topThreshold = 20;

var modifyCtx = function(ctx) {
  ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, 'normal', Chart.defaults.global.defaultFontFamily);
  ctx.textAlign = 'center';
  ctx.textBaseline = 'bottom';
  return ctx;
};

var fadeIn = function(ctx, obj, x, y, black, step) {
  var ctx = modifyCtx(ctx);
  var alpha = 0;
  ctx.fillStyle = black ? 'rgba(' + outsideFontColor + ',' + step + ')' : 'rgba(' + insideFontColor + ',' + step + ')';
  ctx.fillText(obj, x, y);
};

var drawValue = function(context, step) {
  var ctx = context.chart.ctx;

  context.data.datasets.forEach(function (dataset) {
    for (var i = 0; i < dataset.data.length; i++) {
      var model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model;
      var textY = (model.y > topThreshold) ? model.y - 3 : model.y + 20;
      fadeIn(ctx, dataset.data[i], model.x, textY, model.y > topThreshold, step);
    }
  });
};

Janne ขอบคุณสำหรับวิธีแก้ปัญหามันดูดีมาก แต่ฉันมีสถานการณ์ที่ค่าของฉันค่อนข้างใหญ่ (ทศนิยม 5 ตัว) และเมื่อขนาดหน้าจอเล็กหรือฉันมีแผนภูมิจำนวนมากตัวเลขจะอยู่ด้านบนของกันและกัน มีวิธีใดบ้างที่จะทำให้งานนี้ตอบสนองได้? เช่นทำให้ตัวเลขหมุนเมื่อไม่มีช่องว่างเช่นเดียวกับป้ายกำกับด้านล่างแถบหรือไม่?
Phiter

@PhiterFernandes ฉันคิดว่ามันน่าจะหมุนได้โดยตรวจสอบขนาดหน้าจอปัจจุบันในฟังก์ชัน modifiedCtx และใช้ ctx.rotate อย่างไรก็ตามฉันไม่แน่ใจว่าจะเปรียบเทียบขนาดค่ากับพื้นที่ว่างเพื่อกำหนดเวลาหมุนได้อย่างไร
Janne Annala

ฟังก์ชัน modifiedCtx ใช้งานได้เพียงครั้งเดียวและไม่สามารถปรับขนาดได้ใช่ไหม ฉันจะดูซอร์สโค้ด chart.js และดูว่าพวกเขาหมุนป้ายกำกับในแกน x ที่ใด ถ้าฉันเห็นอะไรฉันจะพยายามทำอะไรบางอย่างและบอกคุณที่นี่โอเค? =)
Phiter

ฉันพบบางอย่างในเวอร์ชัน 2.3.0 บรรทัด 7075 calculateTickRotationมันอยู่ในฟังก์ชันมาตราส่วน ฉันจะวิเคราะห์มัน
Phiter

5

จากประสบการณ์ของฉันเมื่อคุณรวมปลั๊กอิน chartjs-plugin-datalabels แล้ว (อย่าลืมวาง<script>แท็กไว้หลังแท็ก chart.js บนหน้าของคุณ) แผนภูมิของคุณจะเริ่มแสดงค่า

หากคุณเลือกแล้วคุณสามารถปรับแต่งให้เหมาะกับความต้องการของคุณได้ การปรับแต่งได้รับการบันทึกไว้อย่างชัดเจนที่นี่แต่โดยพื้นฐานแล้วรูปแบบจะเหมือนกับตัวอย่างสมมุติฐานนี้:

var myBarChart = new Chart(ctx, {
    type: 'bar',
    data: yourDataObject,
    options: {
        // other options
        plugins: {
            datalabels: {
                anchor :'end',
                align :'top',
                // and if you need to format how the value is displayed...
                formatter: function(value, context) {
                    return GetValueFormatted(value);
                }
            }
        }
    }
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.