2017-04-18 191 views
0

我需要在图表条上设置垂直值,chart.js:设置垂直标签方向

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

IM使用此代码来设置酒吧顶部值:那给我这个

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',........});  

任何人有一个想法haw做到这一点?

回答

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(); 
 
         }); 
 
        }); 
 
       } 
 

 
      } 
 
     }

+0

我没有得到-1评论。是的,如果我运行代码片段,则会出现语法错误。但现在,我一直在google/stackoverflowing如何写垂直文本,他的想法与转换和旋转,以及保存和恢复......我没有看到任何地方。这是一篇很棒的文章。谢谢,丹尼斯。 – JustLooking