Kendo UI 将圆环图的系列标签颜色更改为系列颜色

Posted

技术标签:

【中文标题】Kendo UI 将圆环图的系列标签颜色更改为系列颜色【英文标题】:KendoUI change series label color of Donut chart to series color 【发布时间】:2017-02-17 04:19:34 【问题描述】:

我正在使用 kendoUI 和 angular。我有一个剑道甜甜圈图表如下。

<div class="center-pad" kendo-chart k-theme="['material']" k-chart-area="height: 325, width: 480" 
     k-series="[ type: 'donut',
                  field: 'percentage',
                  labels: visible: true, template: '$value $category $dataItem.color', position: 'outsideEnd',  font: '15px Lato-Regular',
                  categoryField: 'source',
                  explodeField: 'explode']" 
                  k-series-click="actionChartClick" k-data-source="actionChartData">

我想将系列标签颜色作为系列颜色。在模板中,我可以通过$dataItem.color访问模板颜色

我试过设置,

k-series="[ ...
              labels: visible: true, template: '$value $category', position: 'outsideEnd',  font: '15px Lato-Regular', color: '$dataItem.color'"

但这没有用。 谁能指导我应该在哪里改变?

【问题讨论】:

【参考方案1】:

使用seriesDefaults.labels.colorseries.labels.color 并从函数返回所需的颜色值。您将可以访问函数参数中的seriesdataItem

http://docs.telerik.com/kendo-ui/api/javascript/dataviz/ui/chart#configuration-series.labels.color

<!DOCTYPE html>
<html>
  <head>
    <base href="http://demos.telerik.com/kendo-ui/donut-charts/donut-labels">
    <style>html  font-size: 14px; font-family: Arial, Helvetica, sans-serif; </style>
    <title></title>
    <link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.3.914/styles/kendo.common.min.css" />
    <link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.3.914/styles/kendo.default.min.css" />

    <script src="//kendo.cdn.telerik.com/2016.3.914/js/jquery.min.js"></script>
    <script src="//kendo.cdn.telerik.com/2016.3.914/js/kendo.all.min.js"></script>
  </head>
  <body>
    <div id="chart"></div>

    <script>

      $(function() 
        $("#chart").kendoChart(
          title: 
            text: "What is you favourite sport?"
          ,
          legend: 
            position: "top"
          ,
          seriesDefaults: 
            labels: 
              template: "#= category # - #= kendo.format('0:P', percentage)#",
              position: "outsideEnd",
              visible: true,
              background: "transparent",
              color: function(e) 
                // e.series
                // e.dataItem
                if (e.category == "Football") 
                  return "#000";
                 else 
                  return e.series.color;
                
              
            
          ,
          series: [
            type: "donut",
            labels: 
              /*color: function(e) 
                // e.series
                // e.dataItem
                if (e.category == "Football") 
                  return "#f00";
                 else 
                  return e.series.color;
                
              */
            ,
            data: [
              category: "Football",
              value: 35
            , 
              category: "Basketball",
              value: 25
            , 
              category: "Volleyball",
              value: 20
            , 
              category: "Rugby",
              value: 10
            , 
              category: "Tennis",
              value: 10
            ]
          ],
          tooltip: 
            visible: true,
            template: "#= category # - #= kendo.format('0:P', percentage) #"
          
        );

      );

    </script>

  </body>
</html>

【讨论】:

【参考方案2】:

我找到了解决方案。这可以通过使用 k-options 来实现。

<div class="center-pad" kendo-chart k-theme="['material']" k-chart-area="height: 325, width: 480" 
 k-series="[ type: 'donut',
              field: 'percentage',
              labels: visible: true, template: '$value $category $dataItem.color', position: 'outsideEnd',  font: '15px Lato-Regular',
              categoryField: 'source',
              explodeField: 'explode']" 
              k-series-click="actionChartClick" k-data-source="actionChartData"
              k-options="chartOptions">

在控制器中有以下内容:

$scope.chartOptions = 
                dataBound: function(e) 
                    e.sender.options.series[0].labels.color = function(element) 
                        return element.dataItem.color;
                    
                
            ;

【讨论】:

以上是关于Kendo UI 将圆环图的系列标签颜色更改为系列颜色的主要内容,如果未能解决你的问题,请参考以下文章

控制 KENDO UI 圆环图的大小

圆环图标签位置

单击按钮即可设置 Kendo Ui 条形图系列

为 Angular rangeArea 图表系列项目颜色设置 Kendo

kendo ui - MultiSelect 多选系列

如何减小 Kendo UI 饼图的大小?