2013-04-04 2 views
0

Мы сравниваем несколько серий с использованием логарифмической шкалы. В большинстве случаев диаграмма выглядит отлично и правильно масштабируется до min/max данных. В приведенном ниже примере верхняя серия отключена. Единственное, что меняется, это данные. Если мы изменим период времени на любой из других параметров, он будет правильно масштабироваться, возврат к 1Y будет иметь ту же проблему. Есть ли способ решить эту проблему?Проблема с логарифмической осью с HighCharts

Второй вопрос, который у меня есть, касается логики линий/меток сетки в шкале журнала. Не следует ли, по умолчанию, шаги основываться на Log (10), например [0,10%, 1%, 10%, 100%, 1000%]? Есть ли опция конфигурации, чтобы установить это? В приведенном ниже примере значение по умолчанию [0,10, 0,20, 0,40, 1,00] не имеет большого смысла.

Это то, что этикетки/тиков всегда должны выглядеть следующим образом: jsfiddle.net/TeTMw/1

Log scale issue

EDIT:

Вот Highcharts код, который выглядит вызывает эту ошибку. Было бы здорово, если бы вы смогли исправить эту проблему.

// Second case: We need intermediary ticks. For example 
      // 1, 2, 4, 6, 8, 10, 20, 40 etc. 
     } else if (interval >= 0.08) { 
      var roundedMin = mathFloor(min), 
       intermediate, 
       i, 
       j, 
       len, 
       pos, 
       lastPos, 
       break2; 

      if (interval > 0.3) { 
       intermediate = [1, 2, 4]; 
      } else if (interval > 0.15) { // 0.2 equals five minor ticks per 1, 10, 100 etc 
       intermediate = [1, 2, 4, 6, 8]; 
      } else { // 0.1 equals ten minor ticks per 1, 10, 100 etc 
       intermediate = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
      } 

      for (i = roundedMin; i < max + 1 && !break2; i++) { 
       len = intermediate.length; 
       for (j = 0; j < len && !break2; j++) { 
        pos = log2lin(lin2log(i) * intermediate[j]); 

        if (pos > min && lastPos <= max) { 
         positions.push(lastPos); 
        } 

        if (lastPos > max) { 
         break2 = true; 
        } 
        lastPos = pos; 
       } 
      } 
+0

Как вы используете сравнить с логарифмической оси? В Highstock для логарифмической шкалы допускаются только положительные значения. Не могли бы вы воссоздать пример на jsFiddle? –

ответ

0
  1. Там же известная проблема, что лог осей могут быть обрезаны в Highcharts 1.3.0. Это будет исправлено с 1.3.1, выпущенным позднее на этой неделе. См. https://github.com/highslide-software/highcharts.com/issues/1666.

  2. Для интервалов тики оси Y см. http://api.highcharts.com/highcharts#yAxis.tickInterval. По умолчанию tickInterval имеет значение null, поэтому расположение тиков определяется tickPixelInterval. В вашем конкретном графике, например, если мы пропустили 0,20 и 0,40, клещи стали бы слишком широко для умолчанию tickPixelInterval из 72.

+0

Спасибо за ответ Torstein. Мой второй вопрос не касался интервала tickInterval, но с возможностью заставить лог-шкалу всегда быть log10 [.01, .10, 1, 10, 100]? Я не вижу, как [0,4, 0,10, 0,20, 0,40, 1,00] для меток/этапов полезно с приведенными выше данными? – Serge

+0

Вот как я ожидаю, что приведенные выше данные всегда будут отображаться в шкале журнала http://jsfiddle.net/TeTMw/1/ – Serge

+0

Что касается вашего второго вопроса, вам нужно пересчитать значения, см. Пример: http://jsfiddle.net/TeTMw/2 / –