Подтвердить что ты не робот

Как использовать даты по оси X с API диаграммы Google?

Есть ли способ построить диаграмму с API диаграмм Google, чтобы значения по оси X составляли дни в месяце?

У меня есть точки данных, которые не снабжены той же частотой. Например:

Date - Value
1/1/2009 - 100
1/5/2009 - 150
1/6/2009 - 165
1/13/2009 - 200
1/20/2009 - 350
1/30/2009 - 500

Я хочу составить диаграмму, которая будет разделять каждую точку данных с относительным расстоянием в зависимости от времени в течение месяца. Это можно сделать с помощью Excel, но как я могу рассчитать и отобразить его с помощью диаграммы Google?

Другие бесплатные решения, подобные диаграмме Google, или бесплатная библиотека, которая может использоваться с ASP.NET, также приветствуются.

4b9b3361

Ответ 1

UPDATE. Теперь это поддерживается непосредственно в API диаграмм с использованием расширенной графики "аннотированная диаграмма" - https://developers.google.com/chart/interactive/docs/gallery/annotationchart

Я сделал это на моей диаграмме ReHash Database Statistics (хотя даты оказались равномерными, поэтому он не показывает, что он это делает).

Сначала вы хотите получить общий период времени, который будет аналогичен общей ширине диаграммы. Для этого мы вычитаем самую раннюю дату из последней. Я предпочитаю использовать временные метки Unix-epoch, поскольку они целые и легко сравниваются таким образом, но вы можете легко вычислить количество секунд и т.д.

Теперь прокрутите свои данные. Для каждой даты мы хотим, чтобы процентиль за весь период считался с начала (т.е. Самая ранняя дата равна 0, последняя - 100). Для каждой даты сначала нужно вычислить расстояние текущей даты с самой ранней даты в наборе данных. По существу, "как далеко мы с самого начала". Итак, вычтите самую раннюю дату с текущей даты. Затем, чтобы найти процентиль, мы разделим расстояние текущей даты на общий период времени, а затем умножим на 100 и обрезаем или округлим любое десятичное число, чтобы дать наш интеграл х-координата.

И это так просто! Ваши значения x будут находиться в диапазоне от 0 (слева от диаграммы) до 100 (правая сторона), и каждая точка данных будет лежать на расстоянии от начала соответствующего им истинного временного расстояния.

Если у вас есть вопросы, не стесняйтесь спрашивать! Я могу отправить pesudocode или PHP, если это необходимо.

Ответ 2

У меня была та же проблема, нашла разброс графиков в Google Charts, он делает именно то, что необходимо.

Здесь код, в который я попал (взял их в качестве отправной точки):

function drawVisualization() {
    // Create and populate the data table.
    var data = new google.visualization.DataTable();
    data.addColumn('date', 'Date');
    data.addColumn('number', 'Quantity');
    data.addRow([new Date(2011, 0, 1), 10])
    data.addRow([new Date(2011, 1, 1), 15])
    data.addRow([new Date(2011, 3, 1), 40])
    data.addRow([new Date(2011, 6, 1), 50])


    // Create and draw the visualization.
    var chart = new google.visualization.ScatterChart(
        document.getElementById('visualization'));
    chart.draw(data, {title: 'Test',
                      width: 600, height: 400,
                      vAxis: {title: "cr", titleTextStyle: {color: "green"}},
                      hAxis: {title: "time", titleTextStyle: {color: "green"}},
                      lineWidth: 1}
              );
}

Обратите внимание, что они, кажется, считают месяцами от 0, т.е. январь равен 0, февраль равен 1,..., декабрь равен 11.

Ответ 4

Это можно сделать с помощью графиков Google довольно легко, но ваше приложение должно вычислить метки

Параметр метки xxl chart x является тем, который вам нужен. В следующем примере отмечена ось y с числами в 50 шагов, а нижняя с датами

chxl=0:|0|50|100|150|200|250|300|350|400|450|500|1:|16/01/2009|26/01/2009|6/02/2009

Ответ 5

Хай. Я думаю так же, как и ты. Я могу предвидеть проблемы, когда метки переписывают друг друга и могут думать только о двух подходах.

1) выяснить количество символов в каждой дате, в зависимости от формата (mon/tue, понедельник/вторник, 1 jan/1 feb, 1 января, 29 февраля, 14/2/2010..etc), затем вычислить сколько ярлыков вы можете поместить в ширину вашей диаграммы (которая может получить gnarly, включая ширину char в пикселях (проще для фиксированных шрифтов) или просто несколько проб и ошибок).

Конечно, ваши ярлыки могут совпадать напрямую с любыми данными.

2) используйте несколько меток оси X и поместите свои даты по вертикали.