Я пытаюсь сделать диаграмму из диаграммы google goi, но я не могу получить свою переменную php в скрипте: я получаю пустую страницу.
PHP
$columns = array( array('string' => 'x'), array('number' => 'values'), array('id' => 'i1', 'type' => 'number', 'role' => 'interval'), array('id' => 'i1', 'type' => 'number', 'role' => 'interval'), array('number' => 'OtherValues'), array('id' => 'i1', 'type' => 'number', 'role' => 'interval'), array('id' => 'i1', 'type' => 'number', 'role' => 'interval') ); $test = array( array( 'a' => array(100, 90, 150,15,10,20)), array( 'b' => array(120, 95, 130,20,10,30)), array( 'c' => array(130, 105, 140,30,25,35)), array( 'd' => array( 90, 85, 95,40,35,45)), array( 'e' => array(70, 74, 63,50,45,55)), array( 'f' => array(30, 39, 22,60,55,65)), array( 'g' => array(100, 90, 150,15,10,20)), ); $table['cols'] = $columns; $table['rows'] = $test;
Просмотр Html
<div id="chart-lines"></div> <script> google.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(<?php echo json_encode($table) ?>); // The intervals data as narrow lines (useful for showing raw source // data) var options_lines = { title: 'Line intervals, default', intervals: { 'lineWidth':2, 'barWidth': 0.5 }, legend: 'none', }; var chart_lines = new google.visualization.LineChart(document.getElementById('chart-lines')); chart_lines.draw(data, options_lines); } </script>
Используя Google Javascript Console, я получаю сообщение «Uncaught Error: Invalid type: undefined» для каждого графика с этими подробностями:
R.Osa R.ug (anonymous function) nj.(anonymous function).d Ep drawchart
Структура данных неверна для конструктора DataTable API визуализации.
Правильный формат столбцов – это массив объектов столбца, где каждый объект имеет свойства type
(обязательный), label
, id
и p
(все необязательные). type
– строка с возможными значениями string
, number
, boolean
, date
, datetime
и timeofday
. label
и id
– строки. p
– объект свойств столбца.
Правильный формат строк – это массив объектов строки, где каждый объект имеет свойства c
и p
. c
– массив объектов ячейки. p
– объект свойств строки. Объекты ячейки имеют свойства v
, f
и p
, где v
– значение ячейки, f
– значение ячейки в ячейке, а p
– объект свойств ячейки.
Поддерживаемые свойства для всех объектов свойств различаются в зависимости от типа диаграммы, которую вы рисуете.
Используя функцию json_encode
PHP, ассоциативные массивы преобразуются в объекты, а неассоциативные массивы превращаются в массивы. Соответствующая структура для вашей таблицы должна выглядеть примерно так:
$columns = array( array('type' => 'string', 'label' => 'x'), array('type' => 'number', 'label' => 'values'), // each interval should have its own unique id, // but leaving them the same won't break anything for your chart as-is array('type' => 'number', 'id' => 'i1', 'p' => array('role' => 'interval')), array('type' => 'number', 'id' => 'i1', 'p' => array('role' => 'interval')), array('type' => 'number', 'label' => 'OtherValues'), array('type' => 'number', 'id' => 'i1', 'p' => array('role' => 'interval')), array('type' => 'number', 'id' => 'i1', 'p' => array('role' => 'interval')) ); $test = array( array('c' => array( array('v' => 'a'), array('v' => 100), array('v' => 90), array('v' => 150), array('v' => 15), array('v' => 10), array('v' => 20) )), // etc ); $table['cols'] = $columns; $table['rows'] = $test;