2014-01-30 3 views
1

У меня есть googled и поиск стека много, прежде чем решить этот вопрос здесь, потому что, хотя некоторые вопросы были похожи, ни одно из решений не работало для меня.Highcharts X-Axis Issue

Я отнесся к категориям с очень широкого диапазона, например, 1881 - 2012, и хотел бы динамически рассчитать и разделить этот диапазон на 11 точек по оси X, что является то, что у меня есть для отображения, без возможности масштабирования. Если данные получены с 1881 по 2012 год, я бы хотел, например, показать, что он показывал (не совсем точно) 1881, 1901, 1921, 1941 гг. ..... если он с 1958 по 2013 год, затем 1958, 1968, 1978 ....

xAxis: { 
      categories: range(start_year,end_year), 
      tickmarkPlacement: "on", 
      tickInterval: Math.ceil(range(start_year,end_year).length/11), 
     }, 

....... 

function range(start_year,end_year) 
    { 
    var years = []; 

    for(var i = start_year;i<=end_year;i++) 
    { 
     years.push(i); 
    } 
    return years; 
    } 

Что делает этот код просто пропустить этикетки для определенных лет, но до сих пор участки точек на графике, ведущей к перекрывающихся лет на оси х.

Любые указания на это были бы высоко оценены.

Вот скрипка, иллюстрирующая мой дилемма http://jsfiddle.net/YUPzk/4/

+0

вы говорите о настройке маркировки оси, или вы хотите, чтобы агрегировать данные, Бейн g построены? – jlbriggs

+0

Мне нужна функция для выбора равных интервальных точек в ярости, запрошенной для отображения всех данных, что будет означать пропустение нескольких лет. Самое главное это показать тенденцию в течение выбранных лет. Как бы то ни было, метки данных на перекрытии X-Axis делают их неразборчивыми, когда вы выбираете диапазон более 12 лет. –

+0

. Итак, вы говорите о маркировке оси, а не о самих данных? Highcharts по умолчанию выбирают подходящий интервал тика в большинстве случаев, если вы просто разрешаете (т. Е. Не используйте категории и не указываете tickInterval). если вы настроите скрипку, вам будет намного легче помочь. – jlbriggs

ответ

1

Вы можете использовать tickPositioner и подготовить свою собственную функцию счетной.
JavaScript ниже один пример того, как это можно сделать:
Highcharts.chart('container', { title: { text: 'Custom tick positions' }, subtitle: { text: 'through axis.tickPositions and axis.tickPositioner' }, xAxis: { tickPositions: [0, 1, 2, 4, 8] }, yAxis: { tickPositioner: function () { var positions = [], tick = Math.floor(this.dataMin), increment = Math.ceil((this.dataMax - this.dataMin)/6); if (this.dataMax !== null && this.dataMin !== null) { for (tick; tick - increment <= this.dataMax; tick += increment) { positions.push(tick); } } return positions; } }, series: [{ data: [ [0, 1],[1, 3],[2, 2],[4, 4],[8, 3] ] }] });

The above demo code can be found at this jsfiddle

+0

Будете ли вы любезны предоставить и пример? –

+0

В связанной ссылке добавлена ​​демонстрация;) –

+0

Я был там, но демо действительно не делает то, что мне нужно. То, что мне нужно, - это, например, годы, разнесенные на 10 лет, не выходя из комнаты в промежутках между годами. Спасибо за попытку помочь :-) –

0

Для тех, кто еще борется, чтобы это сделать, вот что вам нужно, потому что я сделал много в прибегая к помощи без каких-либо ответов найти для людей, страдающих той же проблемой

Highcharts ; x-axis scaling issue

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