Drupal: невозможно установить метки для оси x с помощью модуля Charts

Я хочу создать линейную диаграмму, отображающую изменения цены акций с течением времени, используя 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);

Я получаю следующий результат: диаграмма

Я хочу, чтобы по оси x отображались только метки cerain (в этом примере интервал составляет 20 минут), но опция showTextEvery не работает. Есть идеи, почему? Может, есть другой способ добиться этого?


person panblacha    schedule 29.06.2016    source источник
comment
Вы проверили объект настроек Drupal на сгенерированной странице? Это позволит вам проверить, правильно ли модуль передает переменные (или, по крайней мере, так, как вы ожидаете).   -  person acrosman    schedule 29.06.2016
comment
не уверен, что вы имеете в виду, поскольку я использую Drupal в течение двух дней, но как я написал в комментарии ниже: Я проверил страницу с помощью FireBug, и я вижу, что мои пользовательские параметры для vAxis переданы в html, но не для hAxis (пробовал sth simple, например textStyle), поэтому я думаю, что проблема кроется где-то в моей конфигурации диаграммы или модуле Drupal Chart   -  person panblacha    schedule 30.06.2016


Ответы (1)


значения даты / времени на 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
    )
person WhiteHat    schedule 29.06.2016
comment
спасибо за ответ, но это не решает проблему, ярлыки в точности такие же, как были раньше; Я прочитал документацию Google и попробовал и ticks, и showTextEvery, ни один из них не работает, странно, потому что, когда я устанавливаю ticks для vAxis, метки отображаются так, как я хочу; Я проверил страницу с помощью FireBug и вижу, что мои пользовательские параметры для vAxis переданы в html, но не для hAxis (пробовал что-то простое, например textStyle), поэтому я думаю, что проблема где-то в конфигурации моей диаграммы или в модуле Drupal Chart; кстати, я впервые использую Drupal - person panblacha; 29.06.2016
comment
не следуя, вы говорите, что пробовал оба тика и showTextEvery, ни один из них не работает, но затем вы говорите , когда я устанавливаю метки для меток vAxis, отображаются так, как я хочу - последний часть звучит так, как будто она работает - независимо от того, showTextEvery здесь не будет работать, потому что ни одна из осей не имеет строковых значений, ticks должен работать на любой оси, но вы должны указать значения, которые вы хотите ... - person WhiteHat; 29.06.2016
comment
и извините за ошибки осей x и y, я отредактировал вопрос; тем не менее моя проблема и ваше решение по-прежнему применяются hAxis - person panblacha; 29.06.2016
comment
ни один из них не работает для hAxis, но я могу установить ticks для vAxis - person panblacha; 29.06.2016