javascript - 使用按钮更改 Google 图表数据和外观

标签 javascript html charts google-visualization

我正在创建一个项目,需要能够显示多个谷歌圆环图,每个图表具有不同的值和颜色。目前,我正在创建 3 个图表,通过示例 google 图表代码在单独的 html 页面上使用三个按钮导航到这些图表:

    <html>
      <head>
        <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
        <script type="text/javascript">
          google.charts.load("current", {packages:["corechart"]});
          google.charts.setOnLoadCallback(drawChart);
          function drawChart() {
            var data = google.visualization.arrayToDataTable([
              ['Task', 'Hours per Day'],
              ['Work',     11],
              ['Sleep',    7]
            ]);

            var options = {
              title: 'My Daily Activities',
              pieHole: 0.95,
              slices: {
                  0: { color: 'yellow' },
                  1: { color: 'transparent' }
                }
            };

            var chart = new google.visualization.PieChart(document.getElementById('donutchart'));
            chart.draw(data, options);
          }
        </script>
      </head>
      <body>
        <div id="donutchart" style="width: 900px; height: 500px;"></div>
      </body>
    </html>

但在 data 数组中提供不同的数据,并在 slices 数组中提供不同的颜色。

有没有一种方法可以只使用 1 个图表,并通过仅使用按钮和 1 个 html 页面将一个图表的数据和颜色更改为三组不同的值,而不必使用三个单独的 html 页面创建三个单独的图表?理想情况下,该解决方案将具有多个按钮,单击这些按钮时,将更改图表以包含不同的数据集和不同的颜色图表以区分不同的数据集,但我不确定这是否可能。

最佳答案

像这样的东西可能会帮助你......

google.charts.load('current', {
  'callback': function () {
    var dataSales = google.visualization.arrayToDataTable([
      ['Year', 'Sales'],
      ['2015',  1000],
      ['2016',  1030]
    ]);

    var dataExpenses = google.visualization.arrayToDataTable([
      ['Year', 'Expenses'],
      ['2015', 600],
      ['2016', 540]
    ]);

    var dataRevenue = google.visualization.arrayToDataTable([
      ['Year', 'Revenue'],
      ['2015', 400],
      ['2016', 490]
    ]);

    var options = {
      legend: 'none',
      title: 'Results',
      pieHole: 0.3,
      slices: {
        0: { color: 'yellow' },
        1: { color: 'transparent' }
      }
    };

    var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
    chart.draw(dataSales, options);

    document.getElementById('sales').addEventListener('click', function () {
      options.slices[0].color = 'yellow';
      chart.draw(dataSales, options);
    }, false);

    document.getElementById('expenses').addEventListener('click', function () {
      options.slices[0].color = 'cyan';
      chart.draw(dataExpenses, options);
    }, false);

    document.getElementById('revenue').addEventListener('click', function () {
      options.slices[0].color = 'magenta';
      chart.draw(dataRevenue, options);
    }, false);
  },
  'packages':['corechart']
});
<script src="https://www.gstatic.com/charts/loader.js"></script>

<input type="button" id="sales" value="Sales" />
<input type="button" id="expenses" value="Expenses" />
<input type="button" id="revenue" value="Revenue" />

<div id="chart_div"></div>

关于javascript - 使用按钮更改 Google 图表数据和外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38161862/

相关文章:

javascript - 在 JavaScript 中等待图像加载完成

java - JFreeChart 跨子图对齐条形图宽度

asp.net-mvc-3 - ASP.NET MVC 图表助手。如何为图表上的每个条形图/柱形图设置不同的颜色?

javascript - JQuery Ajax 自动完成不显示结果

html - 标题中的图像阻止导航栏中的链接

javascript - 如何在 React Native 上更改 iOS 中的 Audio Session 类别?

javascript - 让 ngClick 处理动态字段

java - 如何使用 JFreeCharts 将图例绘制为表格?

javascript - CSS 位置 :fixed &lt;script&gt; tag within does not stay fixed

javascript - 属性值更改后 IE8 不刷新类