Столбчатая диаграмма с не работающей осью даты - PullRequest
8 голосов
/ 18 января 2012

У меня есть столбчатая диаграмма со значением оси X, которое является датой.Эта диаграмма сработала сегодня утром, но неожиданно разбилась и отображает «Ряд столбцов с осью области значений не поддерживается».как сообщение об ошибке.Данный веб-сайт не обновлялся в течение нескольких недель.

Мой код построения DataTable выглядит следующим образом:

var data= new google.visualization.DataTable({
        "cols":[{"label":"Date","type":"date"},{"label":"New Users","type":"number"}],
        "rows":[{"c":[{"v":new Date(1325656800000),"f":null},{"v":1355,"f":null}]}]
    });

Что я могу сделать с моим кодом, чтобы это исправить?

Ответы [ 2 ]

10 голосов
/ 19 января 2012

Это не ошибка. API визуализации Google изменился.

В http://code.google.com/apis/chart/interactive/docs/customizing_axes.html#Help они публикуют некоторые решения этой проблемы. Использование опции:

strictFirstColumnType: false

можно использовать только как временное решение. Google говорит:

Однако помните, что эта опция доступна только в течение ограниченного времени и будет удалена в ближайшем будущем.

Рекомендуемое решение состоит в том, что вы изменяете свои поля Date на оси x на String. Я добился этого с помощью средства форматирования перед добавлением значения в объект DateTable.

var formatterMoney = new google.visualization.NumberFormat({suffix: ' zł', decimalSymbol: ',', groupingSymbol: ' '});  
var formatterDate = new google.visualization.DateFormat({pattern: 'dd.MM.yyyy'});

var data = new google.visualization.DataTable();

data.addColumn('string', 'order date'); //used to be date field here
data.addColumn('number', 'total amount');
data.addRow([formatterDate.formatValue(new Date('2011-12-20')),971793.93]); //used to be Date object, now is Date formated as String
data.addRow([formatterDate.formatValue(new Date('2011-11-30')),1.0]);
data.addRow([formatterDate.formatValue(new Date('2011-11-17')),1.0]);
data.addRow([formatterDate.formatValue(new Date('2011-10-27')),1.72]);
data.addRow([formatterDate.formatValue(new Date('2011-10-26')),10.27]);

var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
formatterMoney.format(data, 1);
chart.draw(data, {width: window.width, height: 400, hAxis: {direction: -1}});
3 голосов
/ 19 января 2012

Проблема с полями даты.Я преобразовал поле даты в строку и теперь я использую строку.Если вы используете средства форматирования, вы можете отформатировать значение перед его передачей в DataTable:

formatter.formatValue(date)

Я предполагаю, что это ошибка;Я постараюсь подать отчет об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...