我想使用Drupal Charts 7.x-2.0-rc1 API和Google Charts作为库创建一个显示股价随时间变化的折线图。我尝试了以下代码,并使用一些随机值填充图表:
$chart = array(
'#type' => 'chart',
'#chart_type' => 'line',
'#chart_library' => 'google',
'#title' => t(''),
'#legend' => FALSE,
'#colors' => array('FF6600'),
'#width' => 480,
'#height' => 240,
'#data_labels' => TRUE,
'#raw_options' => array(
'vAxis' => array(
'viewWindowMode' => 'explicit',
'viewWindow' => array(
'min' => 1,
),
),
'hAxis' => array(
'showTextEvery' => 20
)
),
);
$data = array();
for ($i = 0; $i < 100; $i++) {
$data[$i] = array(date('H:i', strtotime("+$i minute")), (rand(5, 10) / 10) * 6);
}
$chart['price'] = array(
'#type' => 'chart_data',
'#title' => t('Share price'),
'#show_in_legend' => FALSE,
'#data' => $data,
'#decimal_count' => 2,
);
$shareChart['chart'] = $chart;
return drupal_render($shareChart);
我得到以下输出: chart
我希望x轴只显示cerain标签(在此示例中为20分钟的间隔),但'showTextEvery'选项不起作用。有什么想法吗?也许还有另一种方法来实现这个目标吗?
答案 0 :(得分:0)
hAxis
上的日期/时间值会导致连续轴
'showTextEvery'
仅适用于离散轴,由字符串值生成
因此,您需要提供自己的ticks
也许尝试类似这样的事情,首先生成data
以及ticks
,然后......
$data = array();
$ticks = array();
$x = 0;
for ($i = 0; $i < 100; $i++) {
$data[$i] = array(date('H:i', strtotime("+$i minute")), (rand(5, 10) / 10) * 6);
if ($i % 20 == 0) {
$ticks[$x] = date('H:i', strtotime("+$i minute"));
$x++;
}
}
然后在图表定义中......
$chart = array(
'hAxis' => array(
'ticks' => $ticks
)