Почему jQPlot dateAxisRenderer работает неправильно?

я хотел бы использовать jQPlot и отображать ось как ряд значений даты - необработанный пакет jQPlot может быть шрифтом здесь:

http://www.jqplot.com/

http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html

Проблема в следующем:

а) ось x не начинается с левой стороны, а также будет показывать значения, которые я не хочу видеть

б) точно такая же проблема справа с большим количеством ненужных чисел

в) хотелось бы, чтобы все дни были на оси x 1 2 3 4 5... не 31 3 6 9...

г) можно ли задать некое смещение к низу (совсем чуть-чуть...)

Скриншот: Изображение из текущего состояния

Мой код:

$.jqplot('chartdiv', [
    [
        ['2012-08-01', 0],
        ['2012-08-02', 0],
        ['2012-08-03', 0],
        ['2012-08-04', 0],
        ['2012-08-05', 0],
        ['2012-08-06', 0],
        ['2012-08-07', 1],
        ['2012-08-08', 0],
        ['2012-08-09', 6],
        ['2012-08-10', 0],
        ['2012-08-11', 0],
        ['2012-08-12', 0],
        ['2012-08-13', 0],
        ['2012-08-14', 0],
        ['2012-08-15', 0],
        ['2012-08-16', 0],
        ['2012-08-17', 0],
        ['2012-08-18', 0],
        ['2012-08-19', 0],
        ['2012-08-20', 0],
        ['2012-08-21', 0],
        ['2012-08-22', 0],
        ['2012-08-23', 0],
        ['2012-08-24', 0],
        ['2012-08-25', 0],
        ['2012-08-26', 0],
        ['2012-08-27', 0],
        ['2012-08-28', 0],
        ['2012-08-29', 0],
        ['2012-08-30', 0],
        ['2012-08-31', 0]
    ]
], {
    title: 'Downloadstatistik',
    axes: {
        xaxis: {
            renderer: $.jqplot.DateAxisRenderer,
            tickOptions: {
                formatString: '%#d',
                tickInterval: '1 month'
            },
            pad: 1.0
        },
        yaxis: {
            tickOptions: {
                formatString: '%.0f'
            },
            min: 0
        }
    }
});

person spotlr    schedule 09.08.2012    source источник


Ответы (1)


Для начала попробуйте установить для tickInterval значение «1 день» :)

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

Вот пример:

var timeline = [[
    ['2012-08-01', 0], ['2012-08-02', 0], ['2012-08-03', 0],
    ['2012-08-04', 0], ['2012-08-05', 0], ['2012-08-06', 0],
    ['2012-08-07', 1], ['2012-08-08', 0], ['2012-08-09', 6],
    ['2012-08-10', 0], ['2012-08-11', 0], ['2012-08-12', 0],
    ['2012-08-13', 0], ['2012-08-14', 0], ['2012-08-15', 0],
    ['2012-08-16', 0], ['2012-08-17', 0], ['2012-08-18', 0],
    ['2012-08-19', 0], ['2012-08-20', 0], ['2012-08-21', 0],
    ['2012-08-22', 0], ['2012-08-23', 0], ['2012-08-24', 0],
    ['2012-08-25', 0], ['2012-08-26', 0], ['2012-08-27', 0],
    ['2012-08-28', 0], ['2012-08-29', 0], ['2012-08-30', 0],
    ['2012-08-31', 0]
]];
var plot = $.jqplot('chartdiv', timeline, {
    title: 'Downloadstatistik',
    axes: {
        xaxis: {
            renderer: $.jqplot.DateAxisRenderer,
            tickOptions: { formatString: '%#d' },
            tickInterval: '1 day',
            min: timeline[0][0][0],
            max: timeline[0][timeline[0].length-1][0]
        },
        yaxis: {
            tickOptions: { formatString: '%.0f' },
            min: 0
        }
    }
});

Я тоже думаю, что прокладка не нужна.

Изменить (добавлен новый jsFiddle):

Вы можете протестировать этот пример кода здесь: http://jsfiddle.net/JhHPz/4/.

person TwystO    schedule 09.08.2012
comment
Хорошо, это работает. Но в нижней строке (xaxis jqplot не показывает все дни как числа 1,3,6,9 вместо 1,2,3,4,5,6... точки из данных отмечены... - person spotlr; 10.08.2012
comment
Извините, я наверняка пропустил щелчок при копировании/вставке ссылки jsFiddle. Я обновил свой ответ новым. Кроме того, что вы имеете в виду, когда говорите: the "dots" from data are marked? - person TwystO; 10.08.2012