我需要分析来自供应商和数据库的交付预测,我得到以下数据数组:
Array
(
[0] => Array
(
[delivery_date] => 2012-05-10
[imported] => 2012-05-10 11:20:37
[qty] => 114
)
[1] => Array
(
[delivery_date] => 2012-05-10
[imported] => 2012-05-11 11:20:37
[qty] => 228
)
[2] => Array
(
[delivery_date] => 2012-05-10
[imported] => 2012-05-15 11:20:37
[qty] => 380
)
[3] => Array
(
[delivery_date] => 2012-05-10
[imported] => 2012-05-16 11:20:37
[qty] => 380
)
[4] => Array
(
[delivery_date] => 2012-05-10
[imported] => 2012-05-17 11:20:37
[qty] => 380
)
)
我的问题是客户每天都没有给出完全相同的预测——这很正常,但是当客户在 2012 年 5 月 10 日没有预测他们需要 x 件产品时,我需要绘制出“缺失”的日期。
我对可能解决方案的想法是:
- 以某种方式与数据数组混合以填充缺少“导入”日期的空值
- 以某种方式将 Google 动态图配置为显示缺失值,而不是从点到点绘制线。
但是到目前为止,我本人还没有成功地使用这些选项中的任何一个:(
代码摘录:google.load('visualization', '1', {packages: ['motionchart']});
function drawVisualization() {
var data = new google.visualization.DataTable();
data.addRows(<?PHP echo count($data); ?>);
data.addColumn('string', 'Artikkel@kuupäev');
data.addColumn('date', 'Imporditud');
data.addColumn('number', 'Qty, pcs');
<?PHP
$jrk=0;
foreach ($data as $row) {
$date_import = date("Y, m, d",strtotime(substr($row[imported],0,10)." -1 month"));
echo "data.setValue($jrk, 0, '".$row[delivery_date]."');\n";
echo "data.setValue($jrk, 1, new Date (".$date_import."));\n";
echo "data.setValue($jrk, 2, ".$row[qty].");\n";
$jrk++;
}
?>
var options = {};
options['state'] =
'{"yAxisOption":"2","time":"2012-03-12","sizeOption":"_UNISIZE","xAxisOption":"_TIME","yZoomedIn":false,"xZoomedDataMax":1331510400000,"yLambda":1,"xZoomedIn":false,"yZoomedDataMin":0,"nonSelectedAlpha":0,"uniColorForNonSelected":false,"orderedByY":false,"dimensions":{"iconDimensions":["dim0"]},"duration":{"timeUnit":"D","multiplier":1},"orderedByX":false,"xLambda":1,"colorOption":"_UNICOLOR","yZoomedDataMax":300000,"showTrails":false,"iconType":"LINE","xZoomedDataMin":1304985600000,"iconKeySettings":[],"playDuration":15000};';
options['width'] = 1200;
options['height'] = 600;
var motionchart = new google.visualization.MotionChart(
document.getElementById('visualization'));
motionchart.draw(data, options);
}
google.setOnLoadCallback(drawVisualization);