首页 文章

如果缺少某些值,如何绘制Google Line Charts?

提问于
浏览
21

我在Google Chart Tools上找到了以下JavaScript代码:

function drawVisualization() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Year');
    data.addColumn('number', 'Sales');
    data.addColumn('number', 'Expenses');
    data.addRows(4);
    data.setValue(0, 0, '2004');
    data.setValue(0, 1, 1000);
    data.setValue(0, 2, 400);
    data.setValue(1, 0, '2005');
    data.setValue(1, 1, 1170); // sales for 2005
    data.setValue(1, 2, 460);
    data.setValue(2, 0, '2006');
    data.setValue(2, 1, 860);
    data.setValue(2, 2, 580);
    data.setValue(3, 0, '2007');
    data.setValue(3, 1, 1030);
    data.setValue(3, 2, 540);

    var chart = new google.visualization.ImageLineChart(document.getElementById('visualization'));
    chart.draw(data, {width: 500, height: 250, min: 0});
  }

如果我注释掉设置2005年销售额的代码行,则销售线将显示在从2006年开始到2007年结束的图表上 . 我期望看到从2004年(在Y = 1000)到2006年的销售线(在Y = 860)和从2006年(在Y = 860)到2007年(在Y = 1030) .

如果我没有2005年销售额的 Value ,我该如何绘制该图表,但我有2004,2006和2007年的 Value ?

Actual result:

actual chart

Expected result: (我为2005年的销售额添加了 Value 930只是为了表明我想要完成的事情;我希望有一个更好的方法可以做到这一点,而无需为所有系列计算所有缺失的Y值)

expected chart

1 回答

  • 31

    如果你可以使用这个图表的javascript版本,那么你可以通过使用line chart options提供的interpolateNulls选项来实现你想要的东西 .

    这是一个有效的例子 .

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <script type="text/javascript" src="http://www.google.com/jsapi"></script>
        <script type="text/javascript">
          google.load('visualization', '1.1', {packages: ['corechart', 'imagelinechart']});
        </script>
        <script type="text/javascript">
        function drawVisualization() {
            var data = new google.visualization.DataTable();
            data.addColumn('string', 'Year');
            data.addColumn('number', 'Sales');
            data.addColumn('number', 'Expenses');
            data.addRows(4);
            data.setValue(0, 0, '2004');
            data.setValue(0, 1, 1000);
            data.setValue(0, 2, 400);
            data.setValue(1, 0, '2005');
            //data.setValue(1, 1, 1170); // sales for 2005
            data.setValue(1, 2, 460);
            data.setValue(2, 0, '2006');
            data.setValue(2, 1, 860);
            data.setValue(2, 2, 580);
            data.setValue(3, 0, '2007');
            data.setValue(3, 1, 1030);
            data.setValue(3, 2, 540);
    
            var chart = new google.visualization.LineChart(document.getElementById('visualization'));
            chart.draw(data, {width: 500, height: 250, min: 0, interpolateNulls: true});
          }
          google.setOnLoadCallback(drawVisualization);
        </script>
      </head>
      <body>
        <div id="visualization" style="width: 600px; height: 400px;"></div>
      </body>
    </html>
    

相关问题