Подтвердить что ты не робот

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

4b9b3361

Ответ 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
    }]
  });
});