为什么我需要将DataView(而不仅仅是DataTable)传递给PieChart.draw()?

时间:2013-02-28 00:27:30

标签: javascript google-visualization

我搜索了很多,最后能够运行我的谷歌图表代码。这是我使用数据视图和数据表的代码。

//这是我的chartDraw.php代码

<html>
<head>
<!--Load the AJAX API -->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">

function drawChart(){
  var jsonData = $.ajax({
        url:"getdata.php",
        dataType:"json",
        async:false
        }).responseText;

//This is used when you hard code your values: static data. Here I am taking data from database so commented it.
/*var jsonData='{"cols":[{"label":"User ID","type":"string"},{"label":"Group Name","type":"string"},{"label":"Requested Nodes","type":"number"},{"label":"Actual PE","type":"number"}],"rows":[{"c":[{"v":"user 1"},{"v":"ufhpc"},{"v":1},{"v":5.000}]},{"c":[{"v":"user2"},{"v":"ufhpc"},{"v":1},{"v":7.000}]}]}';
*/
//Create our data table out of JSON data loaded from server
var data=new google.visualization.DataTable(jsonData);

//PieCharts expects 2 columns of data: a label and a value, so we need to use a DataView to restrict to 2 columns
var view=new google.visualization.DataView(data);
view.setColumns([0,3]);

//Instantiate and draw our chart, passing in some options
var chart=new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(view,{width:400,height:240});
}

//Load the visualization API and the piechart package
google.load('visualization','1',{'packages':['corechart']});

//Set a callback to run when the google visualization API is loaded
google.setOnLoadCallback(drawChart);
</script>
</head>

<body>
        <!--Div that will hold the pie chart -->
        <div id="chart_div"></div>
</body>
</html>

// getdata.php:包含连接和查询

<?php

mysql_connect('localhost','user','password');
mysql_select_db('dbname');

$sqlquery1="select userid,group_name,req_nodes,actualPE from jobs where userid='zhang' limit 200";

$sqlresult1=mysql_query($sqlquery1);

$table=array();
$table['cols']=array(
        array('label'=> 'User ID', type=>'string'),
        array('label'=>'Group Name', type=>'string'),
        array('label'=>'Requested Nodes', type=>'number'),
        array('label'=>'Actual PE', type=>'number')
);
$rows=array();

while($r=mysql_fetch_assoc($sqlresult1)){
        $temp=array();
        $temp[]=array('v' => $r['userid']);
        $temp[]=array('v' => $r['group_name']);
        $temp[]=array('v' =>(int) $r['req_nodes']);
        $temp[]=array('v' =>(float) $r['actualPE']);

        $rows[]=array('c' => $temp);
}

$table['rows']=$rows;

$jsonTable = json_encode($table);
//this print statement just for testing
print $jsonTable;

?>

DataView类和DataTable构造函数之间有什么区别? 如果我不使用DataView,则不会打印。

1 个答案:

答案 0 :(得分:0)

使用谷歌:

Google visualization API.

堆栈溢出不适用于教程,它适用于高效的问题。如果您想创建教程,可能需要使用名为The Code Player的网站。