2013-12-24 2 views
0

У меня есть линейная диаграмма с несколькими осями y и двумя осями x, то есть временем и расстоянием. Я хотел бы отобразить диаграмму, позволяющую пользователю переключаться между двумя осями x. Я борюсь с тем, как определить диаграмму, чтобы она отображала xAxis как расстояние и попыталась установить порядковый номер в false на xAxis, используя категории, указав несколько xAxes и, похоже, не может взломать код. Рабочее решение должно создавать два графика, как в связанном изображении https://drive.google.com/file/d/0B5768Z0sc7d7TFBPVDExU1NXWHc/edit?usp=sharing (так как это мой первый пост, у меня нет репутации, чтобы опубликовать изображение здесь ...)Экран Highcharts alternate x axis

Вот несколько упрощенных фрагментов кода и связанных с ним jsFiddle для вашего прочтения.

$('#container').highcharts({ 

xAxis: { 
    categories: [2,4,6,8,12,16,22,24,32,36,44,56], // representing distance 
    ordinal: false 
}, 

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] 
}] }); 

Это производит равномерно распределенных Xaxis, где каждая категория элемент занимает одну позицию, т.е. нет «растяжения» серии данных вводится. http://jsfiddle.net/robertvizza/LLExL/2141/

$('#container').highcharts({ 

xAxis: { 
    ordinal: false 
}, 

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] 
},{ 
    data: [2,4,6,8,12,16,22,24,32,36,44,56], // representing distance 
    xAxis: 0 
}] }); 

Это показывает две серии по равноотстоящих значений XAxis (jsFiddle является 2142 - опять же, первое сообщение и, следовательно, могут размещать только 2 ссылки ...).

Я надеюсь, что Highcharts может управлять этим так как я ненавижу необходимость пересчета всех точек данных, чтобы подделать отображение через два разных xAxes ... Спасибо заранее за вашу помощь.

ответ

0

Поскольку ваша база xAxis меняется между графиками, вы можете попытаться на самом деле полностью изменить диаграмму. Я создал два набора chartOptions и кнопку для переключения между ними.

$('#btn').click(function() { 
    if (set == true) { 
    chartMainLoc = new Highcharts.Chart($.extend(true, {}, window.optionsChartDistance)); 
     set = false; 
    } else { 
     chartMainLoc = new Highcharts.Chart($.extend(true, {}, window.optionsChartSpeed)); 
     set = true; 
    } 
}); 

Я уверен, что есть один однострочный jquery toggle, но уже поздно. Вот пример fiddle.

+0

Большое спасибо @wergeld. Это, безусловно, поможет, когда я получу код переключения. Однако проблема, с которой я сталкиваюсь, предшествует этому. Кажется, я не могу создать граф с осью x, который не увеличивается на 1 и правильно масштабирует данные серии. Смотрите свою скрипку, измененную здесь http://jsfiddle.net/robertvizza/eyTEp/5/. Обратите внимание, как график скорости и расстояния просто меняет одну ось x для другой, не «растягивая» серию. В этом примере я хотел бы, чтобы на оси x было 56 точек, которые заменяли 12 из графика скорости и секунд. Спасибо –

+0

@RobertVizza, что вы просите, не совсем понятно. Основываясь на вашем изображении вашей рисованной диаграммы, вы делаете то, что хотите - обе диаграммы имеют одинаковую ширину xAxis. Я не знаю, что вы подразумеваете под «растяжкой». Можете ли вы поставить скрипку на диаграмме 1 и диаграмме 2 с тем, как вы хотели бы, чтобы они были? – wergeld

+0

Уверенная вещь @wergeld. Я понял, как заставить диаграммы выглядеть так, как я хочу, однако мне пришлось изменить формат данных, чего я бы предпочел не делать. Первая скрипка показывает данные, основанные на времени, скажем, http://jsfiddle.net/robertvizza/LLExL/2147/. И вторая скрипка показывает данные, основанные на расстоянии http://jsfiddle.net/robertvizza/LLExL/2148/. Это работает, но я получаю разные серии (время, расстояние и другие yAxes) отдельно от сервера, и поэтому я надеялся не платить штраф за исполнение, чтобы объединить их вместе, как в скрипках ... Что бы вы порекомендовали ? –

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