Highcharts масштабируемый линейный график за 6 месяцев - PullRequest
2 голосов
/ 28 марта 2011

Мне нужен 6-месячный график, который показывает месячное представление по умолчанию, но с возможностью масштабирования вниз до дня.

Сегодня наш 6-месячный график имеет:

xAxis: {
title: {
text: 'Temperature'
},
categories: ['Oct','Nov','Dec','Jan','Feb','Mar',]
series: [
{ name: 'my series',
visible: true,
data: [5,10,15,5,7,8,]},
{ name: 'another series',
visible: true,
data: [0,0,0,146,80,0,]},

Этоотлично работает для месячных.

Чтобы получить ежедневные данные, я могу вставить примерно 30 * 6 элементов в данные.Также я попытался использовать:

pointStart: Date.UTC(2010, 11, 1),
pointInterval: 30 * 24 * 3600 * 1000 // one day

, как в этом примере: http://jsfiddle.net/7Mmee/9/

, но проблема не в том, что каждый месяц имеет 30 дней, также в нижней части графика не отображаются категории.

Я уверен, что есть простой способ сделать это, которого мне не хватает.

спасибо Джоэл

Ответы [ 2 ]

8 голосов
/ 29 марта 2011

Похоже, вы пытаетесь показать одну точку данных в месяц.В этом случае я бы порекомендовал назначить каждой точке данных время и изменить форматер даты.

//Example 1: Each data point has a time, with a date formatter:
var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'container'
    },
    xAxis: {
        type: 'datetime',
        dateTimeLabelFormats: { //custom date formats for different scales
            second: '%H:%M:%S',
            minute: '%H:%M',
            hour: '%H:%M',
            day: '%e. %b',
            week: '%e. %b',
            month: '%b', //month formatted as month only
            year: '%Y'
        }
    },

    series: [{
        data: [
            {x: Date.UTC(2010, 0, 1), y: 1}, //one data point for each month
            {x: Date.UTC(2010, 1, 1), y: 4},
            {x: Date.UTC(2010, 2, 1), y: 9},
            {x: Date.UTC(2010, 3, 1), y: 16},
            {x: Date.UTC(2010, 4, 1), y: 25},
            {x: Date.UTC(2010, 5, 1), y: 36}
        ]
    }]
});

Однако, похоже, вы также хотите уменьшить масштаб до уровня «день».Если это так, имеет смысл добавить все ваши точки данных в ряд и использовать свойство zoomType старших диаграмм, возможно, в сочетании с форматером даты.

//Example 2: Each data point represents a day, and we use the 'zoomType' feature:
var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'container'
    },
    xAxis: {
        type: 'datetime',
        zoomType: 'x'
    },

    series: [{
        data: [
            {x: Date.UTC(2010, 0, 1), y: 1}, //one data point for each day
            {x: Date.UTC(2010, 0, 2), y: 1.1},
            {x: Date.UTC(2010, 0, 3), y: 1.4},
            {x: Date.UTC(2010, 0, 4), y: 1.8},
            {x: Date.UTC(2010, 0, 5), y: 2.5},
            {x: Date.UTC(2010, 0, 6), y: 3.8}
        ]
    }]
});
2 голосов
/ 28 марта 2011

Я думаю, что это будет работать:

Вы можете передать свои данные в виде пары метки времени и значения, проверьте этот пример: http://jsfiddle.net/CAKQH/310/

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