Как график 24 часа (например, 23:01:35) в виде значений y в рикше?

У меня есть данные, которые перечисляют время восхода и захода солнца для данной даты и времени. Я хотел бы представить их на двух разных линиях. Пример данных за 7 августа 2015 года:

Восходящая линия: {"x": 1438967378, "y": "05:19:00"}

Линия заката: {"x": 1438967378, "y": "20:33:00"}

Я знаю, как построить график времени на оси X. Тем не менее, неясно, как вы будете составлять график часов дня (в стиле военных часов 22:01:34) для ваших значений y.

Вот код, с которым я работаю:

$(document).ready(function () {
        $('[data-toggle="tooltip"]').tooltip(); 
        var sunrise_data = {{ sunrise_report }}; // {{ variable }} data passed in via Django view
        var sunset_data = {{ sunset_report }};
        var daylight_data = {{ daylight_report }}; 

        sunrise_data.sort(function (a, b) {
            return parseFloat(a.x) - parseFloat(b.x);
        });
        sunset_data.sort(function (a, b) {
            return parseFloat(a.x) - parseFloat(b.x);
        });
        daylight_data.sort(function (a, b) {
            return parseFloat(a.x) - parseFloat(b.x);
        });

        var seriesData = [sunrise_data, sunset_data, daylight_data];

        var graph = new Rickshaw.Graph({
            element: document.getElementById("sun_chart"),
            renderer: 'multi',
            width: $("div#sun_chart").width(),
            height: 180,
            max: 120,
            min: -10,
            interpolation: "linear",
            dotSize: 4,
            series: [{
                name: 'sunrise',
                data: seriesData.shift(),
                color: 'rgba(255, 0, 0, 0.4)',
                renderer: 'line'
            }, {
                name: 'sunset',
                data: seriesData.shift(),
                color: 'rgba(127, 0, 0, 0.3)',
                renderer: 'line'
            }, {
                name: 'daylight',
                data: seriesData.shift(),
                renderer: 'line',
                color: 'rgba(0, 0, 127, 0.25)'
            }
            ]
        });
        var timeUnit = {
                'name': '12 hour', 
                'seconds': 3600 * 12, 
                'formatter': function(d)
                { 
                    return moment(d).format('h:mm a');
                }
            };

            var x_axis = new Rickshaw.Graph.Axis.Time( { graph: graph, timeUnit: timeUnit } );
            //var y_axis = new Rickshaw.Graph.Axis.Time( { graph: graph, timeUnit: timeUnit } );

        graph.render();

        var detail = new Rickshaw.Graph.HoverDetail({
            graph: graph
        });
    });

1 ответ

На оси Y у вас будет временная метка дня, где значения тиков будут целочисленными. Таким образом, ось Y будет выглядеть как (0, 1, 2, ..., 24).

Итак, 16:30 будет 16.5. Для этого вы можете увидеть, как преобразовать время в десятичное число.

На оси X у вас будет целый год с 1 января по 31 декабря.

Ваш график будет выглядеть так:

Обязательно проверьте https://ptaff.ca/soleil/?lang=en_CA

Это поможет вам перепроверить правильность ваших графиков.

Другие вопросы по тегам