2013-04-06 5 views
0

У меня есть набор данных, где значения ряда являются углами в градусах (от 0 до 360). Можно ли построить график, подобный показанному на рисунке here (игнорировать зеленую вертикальную линию) в высоких диаграммах? В частности, если какой-либо из следующих критериев трюмы, график следует избегать увязки двух точек данных непосредственно в смысле прохождения через юг (180), и должен пройти через север (0/360) вместо:Как проиллюстрировать серии угловых данных в высоких диаграммах?

  1. точка ниже 90, а следующая - выше 270 или;
  2. точка находится выше 270, а следующий ниже 90.

Любая помощь приветствуется.

ответ

0

Что бы я сделал, чтобы сделать это, просто проделайте обработку данных, чтобы создать две серии, а затем запишите их оба на один и тот же сюжет. Одна серия для 0-179, а другая для 180-359.

Вы также можете рассмотреть график рассеяния вместо линейного графика, особенно если ваши данные в любой из этих серий не так гладки, как данные в примере. Это означает, что одна точка данных, например, 10, а следующая - 110, а затем следующая после 12 или некоторые из них.

Этот код дает вам пример, данные предоставляются JSON, но вы должны быть в состоянии только с легкостью заменить его, однако ваши данные поступают в:

<script type="text/javascript"> 
$(document).ready(function() { 
    var chart = new Highcharts.Chart({ 
     title: { 
      text: 'Wind Direction' 
     }, 
     chart: { 
      renderTo: 'dataplot4', 
      borderWidth: 1, 
      defaultSeriesType: 'scatter', 
      zoomType: 'x' 
     }, 
     legend: { 
      enabled: false 
     }, 
     plotOptions: { 
      series: { 
       marker: { 
        radius: 3, 
        states: { 
         hover: { 
          enabled: true 
         } 
        } 
       } 
      } 
     }, 
     xAxis: { 
      type: 'datetime' 
     }, 
     yAxis: { 
      tickInterval: 90, 
      min: 0, 
      max: 360, 
      title: { 
       text: 'Wind Direction (deg)' 
      } 
     }, 
     tooltip: { 
      crosshairs: true, 
      formatter: function() { 
       return '<b>' + Highcharts.dateFormat('%e. %b %Y, %H:00', this.x) + ' AKST</b> ' + 
         this.series.name + ': ' + this.y + ' deg'; 
      } 
     }, 
     series: [ 
      { 
       name: 'Wind Direction', 
       data: JSON.parse("[" + wind_dir + "]"), 
       pointStart: Number(startDateTime), 
       pointInterval: 3600000 
      } 
     ] 
    }); 
}); 
</script> 

Я хотел бы думать, что у меня есть jsfiddle для этого где-нибудь, обновит ответ, когда выкопаю его.

EDIT: Вот скрипка, показывающая график рассеяния в действии. http://jsfiddle.net/Reality_Extractor/pNFYL/

+0

Спасибо за ответ, но мне действительно нужны точки, которые нужно подключить. Я думаю, что мои данные достаточно плотные (с 5-минутными интервалами, что составляет в общей сложности 288 баллов). Компромисс, как вы упомянули, состоит в том, чтобы сломать серию, но выглядит странно, если нет линии между двумя значениями, которые находятся достаточно далеко от границы, но должны логически проходить через север (0/360), а не на юг (180), если перейти от первого ко второму. Например, для первой точки должно быть около 70, а второе около 290. Я отредактировал вопрос, чтобы сделать это более явным. – David

+0

О, я просто думаю о возможном способе, если я разбиваю серию на несколько частей, что добавляет точку, которая уходит с диапазоном оси y. Однако это потребует существенной модификации исходных данных. Очевидно, нужна простая процедура для достижения этого ... – David

+0

Я не уверен, что это то, что вам нужно, но как насчет добавления нулевых значений для разделения рядов на несколько частей? Взгляните на это: http://jsfiddle.net/pNFYL/16/ – slawekkolodziej

Смежные вопросы