我在Symfony项目中使用marcaube / ObHighchartsBundle
在我的控制器中,我的代码包含我对highchart / graphic的查询:
$series = array(
array(
'name' => 'Conso ECS',
'type' => 'spline',
'color' => '#003171',
'yAxis' => 1,
'data' => $dataConsoECS, //first query from my repo
),
array(
'name' => 'Consommation Chaleur',
'type' => 'spline',
'color' => '#049372',
'yAxis' => 1,
'data' => $dataConsoChaleur, //second query from my repo
),
array(
'name' => 'Température extérieure',
'type' => 'spline',
'color' => '#FAA945',
'data' => $dataTemperatures, //third query from my repo
),
);
$yData = array(
array(
'labels' => array(
'style' => array('color' => '#FAA945'),
),
'title' => array(
'text' => 'Temperature',
'style' => array('color' => '#FAA945')
),
'opposite' => true,
),
array(
'labels' => array(
'style' => array('color' => '#6C7A89')
),
'gridLineWidth' => 0,
'title' => array(
'text' => 'Consommation',
'style' => array('color' => '#6C7A89')
),
),
);
$ob = new Highchart();
$ob->chart->renderTo('newFlo'); // The #id of the div where to render the chart
$ob->chart->type('linechart');
$ob->title->text('Graphique à 3 échelles');
$ob->xAxis->title(array('text' => "Dates"));
$ob->xAxis->categories($arrayResultHours); //my last query which return an array of datetimes
$ob->xAxis->type('datetime');
$ob->yAxis($yData);
$ob->series($series);
return $this->render('MySpaceMyBundle:MyFolder:graphique.html.twig', array(
'chartChoice' => $chartRender, 'chart' => $ob));
}
这是我的结果:
您可以看到,查询中的所有日期时间都在我的xAxis标签中,并自动设置间隔。我只需要设置自己的每小时间隔时间,并在我传递系列索引时显示我的日期时间,例如example或here。
正如你所看到的,我有很好的DQL系列。关于日期时间的las是确定conso的时间(小时)。
但实际上,我试图在我的xAxis上得到这个结果:
y|
|
|
|_____________________________________________
00h00 01h00 02h00 03h00 to ...... 23h00
我不想让我的日期时间确定出来,但是我试图在上面代表你一天的间隔时间。
因此xAxis标签必须有一个00h00到23h00之间的日间隔,但我的系列必须要从我的数据库显示我的日期时间。这是我迷路的地方,因为我需要设置一个小时到几小时的间隔,但是我的系列必须指向查询的日期时间。
我找到this,但我还没找到我的解决方案。我需要像这样参数我的xAxis吗?
$ob->xAxis->type('datetime');
$ob->xAxis->tickInterval((24 * 3600 * 1000));
有人知道如何使用ObHighchartsBundle正确设置xAxis?
答案 0 :(得分:0)
从图表中删除类别:
$ob->xAxis->categories($arrayResultHours);.
现在,设置datetime
类型和tickInterval
。
最后也是最重要的是点应该是x和y的数组。在这样的js中:[x, y]
,其中x
是以毫秒为单位的时间戳,y
是值(数字)。