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