如何使用Google Chart创建多环甜甜圈图表?

时间:2017-10-03 15:15:26

标签: javascript google-visualization

有人帮我用谷歌图表创建一个多环甜甜圈图表吗?

https://developers.google.com/chart/interactive/docs/gallery/piechart#donut

我需要使用多级颜色跟随图像。 enter image description here

2 个答案:

答案 0 :(得分:0)

这可以通过2012年已被弃用的Google Image Charts API来实现。它似乎仍然正常运行,不再维护了。

使用该API,可以(并且仍然)可以创建同心饼图,例如下面的那个

http://chart.apis.google.com/chart?chd=s:Yr3,ff9&cht=pc&chs=300x200&chxr=0,20,45|1,25,50

产生以下饼图

enter image description here

此外,您可以使用API​​并轻松创建自己的饼图: http://www.jonwinstanley.com/charts/

在新的Google Charts API中支持这种同心饼图仍为an open issue

答案 1 :(得分:0)

我知道这已经是很久以前的事了,但这里有一种方法可以做到这一点,使用谷歌图表:

但是,我删除了字幕,因为它们会干扰物体的位置,我认为如果我们做字幕会更容易也更好。然后我只是画了一些绘图和数学来实现这一点。

您可以使用 3 个变量来控制大小和 pieHole。

如果你需要更多的环,你需要复制第一个馅饼洞的逻辑,但你的代码会增长 kkkk。

 google.charts.load('current', {'packages':['corechart']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {
      
        //control is here
        let larguraGraficoFora = 400;
        let alturaGraficoFora = 400;
        let furoGraficoFora = 0.8;

        var data = google.visualization.arrayToDataTable([
          ['Sabor de Pizza', 'Quantidade'],
          ['portuguesa',     30],
          ['frango com catupiry',     30],
          ['calabresa',     30],
          ['alguma doce',     30],
        ]);

        var options = {
          width: larguraGraficoFora,
          height: alturaGraficoFora,
          chartArea:{left:0,top:0,width:'100%',height:'100%'},
          pieHole: furoGraficoFora,
          legend: 'none'
        };

        var chart = new google.visualization.PieChart(document.getElementById('donut_1'));
        chart.draw(data, options);
        
        var data2 = google.visualization.arrayToDataTable([
          ['Effort', 'Amount given'],
          ['c#',     30],
          ['python',     30],
          ['javascript',     30],
          ['sql server',     30],
          ['php',     30],
        ]);

        var options2 = {
            legend:'none',
          width: larguraGraficoFora*furoGraficoFora,
          height: alturaGraficoFora*furoGraficoFora,
          chartArea:{left:0,top:0,width:'100%',height:'100%'},
          backgroundColor: 'transparent',
          legend: 'none'
        };

        var chart2 = new google.visualization.PieChart(document.getElementById('donut_2'));
        chart2.draw(data2, options2);
            ajustePosicaoPieCentral(larguraGraficoFora, alturaGraficoFora, furoGraficoFora);
      }
      
      
        function ajustePosicaoPieCentral(largura, altura, furo){

            yt = altura*(1+furo)/2.0;
            xt = largura*(1-furo)/2.0;

            var css = document.getElementById('donut_2');
            css.style.transform = "translate("+xt+"px, -"+yt+"px)";
        }
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
       <div id="donut_1" ></div>
       <div id="donut_2"></div>