Drupal:无法使用Charts模块为x轴设置标签

时间:2016-06-29 11:06:34

标签: charts drupal-7 google-visualization

我想使用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'选项不起作用。有什么想法吗?也许还有另一种方法来实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

hAxis上的日期/时间值会导致连续

'showTextEvery'仅适用于离散轴,由字符串值生成

请参阅discrete vs continuous

因此,您需要提供自己的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
    )