带标签的谷歌饼图(更改标签行的颜色)

时间:2018-01-29 11:32:07

标签: c# jquery asp.net asp.net-mvc charts

我是谷歌饼图的新手。如果切片是蓝色的话,我想改变标签样式的线条颜色,如切片颜色,然后线条颜色应为蓝色。

并且某些切片没有显示其标签,如黄色和紫色切片。

 var data3 = google.visualization.arrayToDataTable(ClaimSubmissionStatus);

        var options = {
            legend: { textStyle: { color: 'black', fontSize: 14 }, position: 'labeled', alignemnt: 'center' },
            //is3D: true,
           // legend: { position: 'labeled' },
            chartArea: { backgroundColor: '#FFFFFF', left: '5%', top: '15', width: '85%' }

        };

        var charta = new google.visualization.PieChart(document.getElementById('divClaimSubmission'));
        charta.draw(data3, options);

        google.visualization.events.addListener(charta, 'select', function () {
            debugger;
            var selectedItem = charta.getSelection()[0];
            if (selectedItem) {
                var status = data3.getValue(selectedItem.row, 0);
                CLAIMSUBMISSIONSTATUSPIECHARTDetail(status);
            }


        });

enter image description here

1 个答案:

答案 0 :(得分:1)

没有用于更改图例标记线颜色的文档选项,
但您可以在图表的protocol ABCProtocol { func doABC() } class FirstViewController: UIViewController, ABCProtocol { @IBAction func firstButtonPressed(_ sender: Any) { doABC() } @IBAction func showSecondVC_ sender: Any) { // showingSecondVC secondVC.delegate = self } func doABC() { // do ABC } } class SecondViewController: UIViewController { weak var delegate: ABCProtocol? @IBAction func SecondButtonPressed(_ sender: Any) { // Dismiss second vc & call First View controller method so that it does ABC. delegate?.doABC() } } 事件

上手动更改

另外,确保每个切片存在一条线的唯一方法是增加图表的高度

请参阅以下工作代码段...

'ready'
google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ['Label', 'Value'],
    ['Billed', 19],
    ['Paid Up', 9],
    ['Not Billed', 2],
    ['Ready for Review', 15],
    ['Not Paid Up', 1]
  ]);

  var options = {
    chartArea: {
      left: 12,
      top: 12,
      width: '85%'
    },
    colors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#990099', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4caf50', '#8bc34a', '#cddc39', '#ffeb3b', '#ffc107', '#ff9800', '#ff5722', '#795548', '#9e9e9e', '#607d8b', '#000000', '#ffffff'],
    legend: {
      position: 'labeled'
    }
  };

  var container = document.getElementById('chart_div');
  var chart = new google.visualization.PieChart(container);
  var drawCount = 0;
  var drawMax = 100;

  google.visualization.events.addListener(chart, 'ready', function () {
    var observer = new MutationObserver(function () {
      var svg = container.getElementsByTagName('svg');
      if (svg.length > 0) {
        var legend = getLegend(svg[0]);
        // check number of markers
        if (legend.length !== data.getNumberOfRows()) {
          // increase height & redraw chart
          options.height = parseFloat(svg[0].getAttribute('height')) + 32;
          drawCount++;
          if (drawCount < drawMax) {
            chart.draw(data, options);
          }
        } else {
          // change legend marker colors
          var colorIndex = 0;
          legend.forEach(function (legendMarker) {
            legendMarker.path.setAttribute('stroke', options.colors[colorIndex]);
            if (legendMarker.hasOwnProperty('circle')) {
              legendMarker.circle.setAttribute('fill', options.colors[colorIndex]);
            }
            colorIndex++;
            if (colorIndex > options.colors.length) {
              colorIndex = 0;
            }
          });
        }
      }
    });
    observer.observe(container, {
      childList: true,
      subtree: true
    });
  });

  // get array of legend markers -- {path: pathElement, circle: circleElement}
  function getLegend(svg) {
    var legend = [];
    Array.prototype.forEach.call(svg.childNodes, function(child) {
      var group = child.getElementsByTagName('g');
      Array.prototype.forEach.call(group, function(subGroup) {
        var path = subGroup.getElementsByTagName('path');
        if (path.length > 0) {
          if (path[0].getAttribute('fill') === 'none') {
            var legendMarker = {
              path: path[0]
            };
            var circle = subGroup.getElementsByTagName('circle');
            if (circle.length > 0) {
              legendMarker.circle = circle[0];
            }
            legend.push(legendMarker);
          }
        }
      });
    });
    return legend;
  }

  chart.draw(data, options);
});

注释:
1)需要使用自定义颜色以保持切片和线条颜色同步 2)需要<script src="https://www.gstatic.com/charts/loader.js"></script> <div id="chart_div"></div>,图表将恢复交互,例如悬停或选择
3)使用图表方法MutationObserver

时,不会反映手动更改