chart.js:设置垂直标签方向

时间:2017-04-18 16:47:42

标签: javascript css charts

我需要在图表栏顶部设置垂直值,

实际上我可以设置水平值,但这不是我想要的结果。

我正在使用此代码在条形图上设置值:

  animation: {
                        duration: 1,
                        onComplete: function () {

                            if(byDetails){

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

                                        ctx.fillStyle = 'black';
                                        dataset.data[index] =  parseFloat(dataset.data[index]).toFixed(2);
                                        var data = dataset.data[index];

                                        if (withPersent) {
                                            data = dataset.data[index] + "%";
                                        }


                                        var random = Math.floor(Math.random() * 16) + 5;
                                        ctx.fillText(data, bar._model.x, bar._model.y - random);


                                    });
                                });
                            }

                        }
                    }

给我这个:enter image description here

如您所见,条形图顶部的值是水平的,但我需要更改方向,如下所示:

enter image description here

PS:我正在使用这样的图表:

var ctx = document.getElementById(chartDiv);
var myChart = new Chart(ctx, {type: 'bar',........});      

任何人都有想法这样做吗?

1 个答案:

答案 0 :(得分:0)

也许你找到了问题的答案。 我的代码:



animation: {
            duration: 1,
            onComplete: function () {

                if (byDetails) {

                    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.textBaseline = 'bottom';

                    this.data.datasets.forEach(function (dataset, i) {
                        var meta = chartInstance.controller.getDatasetMeta(i);
                        meta.data.forEach(function (bar, index) {

                            ctx.fillStyle = 'black';
                            dataset.data[index] = parseFloat(dataset.data[index]).toFixed(2);
                            var data = dataset.data[index];

                            if (withPersent) {
                                data = dataset.data[index] + "%";
                            }

                            ctx.save();
                            var random = Math.floor(Math.random() * 16) + 5;
                            ctx.translate(bar._model.x, bar._model.y - random);
                            ctx.rotate(-0.5 * Math.PI);
                            ctx.fillText(data, 0, 0);
                            ctx.restore();
                        });
                    });
                }

            }
        }