在Google Chart中显示/隐藏行/数据

时间:2022-12-04 09:53:34

I'm trying to make a google line chart with 2 lines in it.

我正在尝试制作一条包含2行的谷歌折线图。

You should be able to turn them on and off(show/hide) by two checkboxes..

您应该能够通过两个复选框打开和关闭它们(显示/隐藏)。

Anyone got any idea show to make this, og just give some pointers?

任何人都有任何想法表明,og只是给出一些指示?

My guess would be some onClick jQuery stuff?

我的猜测是onClick jQuery的东西?

<html>
<head>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales', 'Expenses'],
          ['2004',  1000,      400],
          ['2005',  1170,      460],
          ['2006',  660,       1120],
          ['2007',  1030,      540]
        ]);
        var options = {
          title: 'Company Performance'
        };
        var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 900px; height: 500px;"></div>
  </body>
</html>

4 个解决方案

#1


30  

try this

尝试这个

Mark up:

标记:

 <body>
   <div id="chart_div" style="width: 900px; height: 500px;"></div>

   <button type="button" id="hideSales"  >Hide Sales</button>
   <button type="button" id="hideExpenses"  >Hide Expence</button>

 </body>

Script:

脚本:

<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = google.visualization.arrayToDataTable([
      ['Year', 'Sales', 'Expenses'],
      ['2004',  1000,      400],
      ['2005',  1170,      460],
      ['2006',  660,       1120],
      ['2007',  1030,      540]
    ]);
    var options = {
      title: 'Company Performance'
    };
    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

    chart.draw(data, options);


   var hideSal = document.getElementById("hideSales");
   hideSal.onclick = function()
   {
      view = new google.visualization.DataView(data);
      view.hideColumns([1]); 
      chart.draw(view, options);
   }
   var hideExp = document.getElementById("hideExpenses");
   hideExp.onclick = function()
   {
      view = new google.visualization.DataView(data);
      view.hideColumns([2]); 
      chart.draw(view, options);
   }


  }


</script>

#2


14  

To get your required output check this code.

要获得所需的输出,请检查此代码。

var sel = chart.getSelection();
        // if selection length is 0, we deselected an element
        if (sel.length > 0) {
            // if row is null, we clicked on the legend
            if (sel[0].row == null) {
                var col = sel[0].column;
                if (columns[col] == col) {
                    // hide the data series
                    columns[col] = {
                        label: data.getColumnLabel(col),
                        type: data.getColumnType(col),
                        calc: function () {
                            return null;
                        }
                    };

                    // grey out the legend entry
                    series[col - 1].color = '#CCCCCC';
                }
                else {
                    // show the data series
                    columns[col] = col;
                    series[col - 1].color = null;
                }
                var view = new google.visualization.DataView(data);
                view.setColumns(columns);
                chart.draw(view, options);
            }
        }
    });

Instead of having check box use the legend to hide/show the lines.

不使用复选框,而是使用图例隐藏/显示线条。

Check this for the working sample. jqfaq.com

检查这是否有工作样品。 jqfaq.com

#3


8  

Recently the behavior of the select event changed so Abinaya Selvaraju's answer needs a slight fix

最近,精选活动的行为发生了变化,因此Abinaya Selvaraju的回答需要稍加修复

if (typeof sel[0].row === 'undefined') {
    ...
}

becomes

if (sel[0].row == null) {
    ...
}

#4


2  

I updated the solution provided by Shinov T to allow real toggling (show/hide) of columns. You can see the result in this fiddle.

我更新了Shinov T提供的解决方案,允许真正切换(显示/隐藏)列。你可以在这个小提琴中看到结果。

I added this code to save the current state of each column to allow toggleing:

我添加了此代码以保存每列的当前状态以允许切换:

var toggleSales = document.getElementById("toggleSales");
var salesHidden = false;
toggleSales.onclick = function() {
  salesHidden = !salesHidden;
  view = new google.visualization.DataView(data);
  if (salesHidden) {
    view.hideColumns([1]);
  }
  chart.draw(view, options);
}

var toggleExp = document.getElementById("toggleExpenses");
var expHidden = false;
toggleExp.onclick = function() {
  expHidden = !expHidden;
  view = new google.visualization.DataView(data);
  if (expHidden) {
    view.hideColumns([2]);
  }
  chart.draw(view, options);
}

#1


30  

try this

尝试这个

Mark up:

标记:

 <body>
   <div id="chart_div" style="width: 900px; height: 500px;"></div>

   <button type="button" id="hideSales"  >Hide Sales</button>
   <button type="button" id="hideExpenses"  >Hide Expence</button>

 </body>

Script:

脚本:

<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = google.visualization.arrayToDataTable([
      ['Year', 'Sales', 'Expenses'],
      ['2004',  1000,      400],
      ['2005',  1170,      460],
      ['2006',  660,       1120],
      ['2007',  1030,      540]
    ]);
    var options = {
      title: 'Company Performance'
    };
    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

    chart.draw(data, options);


   var hideSal = document.getElementById("hideSales");
   hideSal.onclick = function()
   {
      view = new google.visualization.DataView(data);
      view.hideColumns([1]); 
      chart.draw(view, options);
   }
   var hideExp = document.getElementById("hideExpenses");
   hideExp.onclick = function()
   {
      view = new google.visualization.DataView(data);
      view.hideColumns([2]); 
      chart.draw(view, options);
   }


  }


</script>

#2


14  

To get your required output check this code.

要获得所需的输出,请检查此代码。

var sel = chart.getSelection();
        // if selection length is 0, we deselected an element
        if (sel.length > 0) {
            // if row is null, we clicked on the legend
            if (sel[0].row == null) {
                var col = sel[0].column;
                if (columns[col] == col) {
                    // hide the data series
                    columns[col] = {
                        label: data.getColumnLabel(col),
                        type: data.getColumnType(col),
                        calc: function () {
                            return null;
                        }
                    };

                    // grey out the legend entry
                    series[col - 1].color = '#CCCCCC';
                }
                else {
                    // show the data series
                    columns[col] = col;
                    series[col - 1].color = null;
                }
                var view = new google.visualization.DataView(data);
                view.setColumns(columns);
                chart.draw(view, options);
            }
        }
    });

Instead of having check box use the legend to hide/show the lines.

不使用复选框,而是使用图例隐藏/显示线条。

Check this for the working sample. jqfaq.com

检查这是否有工作样品。 jqfaq.com

#3


8  

Recently the behavior of the select event changed so Abinaya Selvaraju's answer needs a slight fix

最近,精选活动的行为发生了变化,因此Abinaya Selvaraju的回答需要稍加修复

if (typeof sel[0].row === 'undefined') {
    ...
}

becomes

if (sel[0].row == null) {
    ...
}

#4


2  

I updated the solution provided by Shinov T to allow real toggling (show/hide) of columns. You can see the result in this fiddle.

我更新了Shinov T提供的解决方案,允许真正切换(显示/隐藏)列。你可以在这个小提琴中看到结果。

I added this code to save the current state of each column to allow toggleing:

我添加了此代码以保存每列的当前状态以允许切换:

var toggleSales = document.getElementById("toggleSales");
var salesHidden = false;
toggleSales.onclick = function() {
  salesHidden = !salesHidden;
  view = new google.visualization.DataView(data);
  if (salesHidden) {
    view.hideColumns([1]);
  }
  chart.draw(view, options);
}

var toggleExp = document.getElementById("toggleExpenses");
var expHidden = false;
toggleExp.onclick = function() {
  expHidden = !expHidden;
  view = new google.visualization.DataView(data);
  if (expHidden) {
    view.hideColumns([2]);
  }
  chart.draw(view, options);
}