Автоматическое масштабирование на высоких графиках после загрузки

Кто-нибудь знает, как автоматически увеличить часть графика после завершения загрузки? У меня много данных о таймсерах, но самая важная информация - справа. Мне все равно хотелось бы, чтобы все данные были доступны, но только последние 7 дней были увеличены.

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

Вот пример диаграммы из jsfiddle, которая имеет нормальную функциональность масштабирования: http://jsfiddle.net/Y5q8H/50/

У меня есть еще несколько идей о том, как это можно сделать, но я думаю, что я хочу, это лучший способ сделать это.

Другие идеи:

1) Загружайте только последние 7 дней, добавьте фальшивую кнопку Reset Zoom, затем загрузите всю серию данных

2) Посмотрите на этот сестра продукт StockCharts, который сейчас находится в Beta. Кажется, у него есть куча предустановленных дисплеев диапазона, что тоже было бы здорово. Я не уверен, сколько из моего существующего кода мне придется изменить, хотя.

Ответы

Ответ 1

Вы можете использовать функцию setExtremes для изменения масштаба. http://jsfiddle.net/quVda/382/

Для графика таймсеров с ежедневной информацией вам нужно использовать представление UTC даты:

var d = new Date();
chart.xAxis[0].setExtremes(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - 7), Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));

Ответ 2

Обновленная официальная скрипка для решения, ребята: http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/stock/members/axis-setextremes/

$(function() {
    $('#container').highcharts('StockChart', {

        rangeSelector: {
            selected: 1
        },

        series: [{
            name: 'USD to EUR',
            data: usdeur
        }]
    });

    $('#button').click(function() {
        var chart = $('#container').highcharts();
        chart.xAxis[0].setExtremes(
            Date.UTC(2007, 0, 1),
            Date.UTC(2007, 11, 31)
        );
    });
});

Ответ 3

Если вы попытаетесь выполнить

еще один вариант,
var max_in = 100; //the highest y value you have in your series data;
var min_in = 41 ;//the lowest y value you have in your series data;

yaxis=this.yAxis[0];
yaxis.options.max = max_in;
yaxis.options.min = min_in;