Исходные данные Highstock с неправильными данными становятся неверными x-scale
У меня есть нерегулярные данные. Диаграмма хорошо рисуется, когда я использую highcharts:
$(function() {
var chart = new Highcharts.Chart({
chart: {
renderTo: 'chart'
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'Volume',
data: chart_arr,
}]
});
});
http://jsfiddle.net/KnTaw/9/
Но у меня много данных, поэтому мне нужно увеличить дату и выбрать highstock. Затем происходит странное: ось х становится нелинейной.
$(function() {
var chart2 = new Highcharts.StockChart({
chart: {
renderTo: 'chart2'
},
rangeSelector: {
selected: 0
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'val',
data: chart_arr,
type : 'area',
}]
});
});
http://jsfiddle.net/Mc3mW/1/
Обратите внимание, что данные за полчаса от 6 января 20: 00-20: 30 выделяют больше места, чем 2 дня 11-13 января. (Конечно, данные одинаковы.)
Как я могу заставить ось x в highstock стать линейной? Или Как включить инструмент масштабирования нижнего зума для высоких графиков? Спасибо.
Ответы
Ответ 1
Вам нужно установить свойство xAxis.ordinal
на false
, по умолчанию это true
. Значение true
указывает, что точки должны быть помещены с фиксированными интервалами w.r.t пробел (пиксели), а false
изменяет точки, которые должны помещаться с фиксированными интервалами w.r.t. время
xAxis: {
ordinal: false
}
Линейная ось x | Highstock @jsFiddle
Ответ 2
Можно масштабировать диаграмму с помощью библиотеки JavaScript HighCharts. Свойство, которое вы должны установить, zoomType
Определяет, в каких размерах пользователь может масштабировать, перетаскивая мышь. Может быть одним из x, y или xy. По умолчанию используется значение "".
Здесь вы можете увидеть exmaple здесь. Чтобы увеличить определенное место, нажмите левую кнопку мыши и выберите область, которую вы хотите увеличить.
Код HTML:
<div id="container" style="height: 400px"></div>
Код JavaScript:
$(function () {
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'line',
zoomType: 'x'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
});
});
Кроме того, кнопка "Reset zoom" автоматически отображается в событии масштабирования и легко манипулирует тем, какая часть графика будет отображаться при нажатии.
В любом случае, для получения дополнительной информации и примеров настроек масштабирования, события и кнопки вы должны обратиться к "Справочному руководству по параметрам высоких карт" здесь. Просто введите "zoom" в поиске.
Что касается вашего другого вопроса: "Как сделать линейку StockChart в соответствии с HighStock API, тип графика по умолчанию является линейным. То, что происходит здесь, вызвано параметром area, который вы установили в свойстве series. Просто удалите это, и вы получите линейную диаграмму:
$(function() {
var chart2 = new Highcharts.StockChart({
chart: {
renderTo: 'chart2'
},
rangeSelector: {
selected: 0
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'val',
data: chart_arr
}]
});
});