【问题标题】:How do I add a legend and a label to my Google Pie Chart?如何向我的 Google 饼图添加图例和标签?
【发布时间】:2013-12-12 07:16:34
【问题描述】:

如何为我的 Google 饼图设置图例和标签?

已弃用的方法具有此功能:https://developers.google.com/chart/image/docs/gallery/pie_charts

另外,我怎样才能让 onclick 所选切片从馅饼中爆炸一点?

这是我目前所拥有的:

  <div id="pie_chart_div" style="width: 940px; height: 500px;"></div>

  <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  <script type="text/javascript">
    google.load("visualization", "1", {packages:["corechart"]});
    google.setOnLoadCallback(render_applicant_sources);

    function render_applicant_sources() {
      var data = new google.visualization.arrayToDataTable([["Source","Number of Applicants"],["Hospitality Online",222],["Indeed",22]]);

      data.addColumn('string', 'Geocoder');
      data.addColumn('number', 'Geocodes');

      var chart = new google.visualization.PieChart(document.getElementById('pie_chart_div'));

      var options = {
          title: 'Scottsdale Resort & Conference Center from December  1, 2012 to December  1, 2013',
          is3D: true,
          colors: [ '#2483b3', '#AAC789', '#1E4147', '#437356', '#F34A53', '#FAE3B4' ],
          titleTextStyle: { bold: false },
          legend: { position: 'labeled' }
      };

      chart.draw(data, options);

      google.visualization.events.addListener(chart, 'click', function(e){
        var data = chart.getSelection();
        if(data.length > 0) {
            chart.setSelection([]);
        }
      });
    }
  </script>

http://jsfiddle.net/xHwZW/

【问题讨论】:

    标签: javascript charts google-visualization


    【解决方案1】:

    您需要使用“选择”事件处理程序,并设置图表的slices.&lt;slice index&gt;.offset 选项:

    google.visualization.events.addListener(chart, 'select', function() {
        var selection = chart.getSelection();
        if (selection.length > 0) {
            if (!options.slices || !options.slices[selection[0].row]) {
                // if this is the first time the user clicked on the pie,
                // or if the user clicks on an unexploded slice,
                // unexplode all slices and explode the selected slice
                options.slices = [];
                options.slices[selection[0].row] = {
                    offset: 0.4
                };
            }
            else {
                // otherwise the user clicked on an exploded slice, so unexplode all slices
                options.slices = [];
            }
            chart.draw(data, options);
        }
        else {
            options.slices = [];
            chart.draw(data, options);
        }
    });
    

    查看工作示例:http://jsfiddle.net/asgallant/R8yAK/

    【讨论】:

    • 谢谢!我如何让它在双击事件时将切片移回?现在,它会在单击时爆炸一个切片,但是单击另一个切片会移动整个图表...
    • 您可以进行一些检测以查看切片是否已爆炸,并在必要时将其取消爆炸。查看更新后的帖子。
    • 谢谢!您知道如何在标签中添加图例吗?
    • 您将legend.position 设置为'labeled',这会为切片创建引导线。如果您喜欢标准图例,可以将legend.position 设置为“右”、“左”、“上”或“下”。 API 不支持同时拥有引导线和常规图例;如果你需要,那么我建议在 HTML 中构建一个自定义图例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多