2015-05-26 10 views
0

У меня есть график, который, в котором я загрузить новые данные, используя следующую функцию:Установка имени графа в C3.js

function insertGraph(yAxis, xAxis, Header) { 
    setTimeout(function() { 
     chart.load ({ 
      bindto: "#graph", 
      xs: { 
       'y':'x' 
      }, 
      columns: [ 
       yAxis, 
       xAxis 
      ] 
     }); 
    }, 100); 
} 

Пример значений для YAxis, Xaxis и заголовка, которые передаются в выглядеть следующим образом:

YAxis:

["y", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] 

XAxis:

["x", 0, 131.35, 26971.3, 27044.75, 27351.4, 27404.483333333334, 27419.416666666668, 33128.96666666667, 33549.13333333333, 34049.48333333333, 77464.26666666666, 77609.71666666666, 174171.85, 259166.98333333334] 

Заголовок:

MakeModeChange 

Все здорово, за исключением того, когда карта загружается он дает имя данных «у» работает, мне это нужно иметь Header (в данном случае MakeModeChange) в качестве имени данных. Я попытался с помощью name как ниже код, но ничего не произошло:

function insertGraph(yAxis, xAxis, Header) { 
    setTimeout(function() { 
     console.log(Header); 
     console.log(yAxis); 
     chart.load ({ 
      bindto: "#graph", 
      xs: { 
       'y':'x' 
      }, 
      columns: [ 
       yAxis, 
       xAxis 
      ], 
      names: { 
       y: 'Header' 
      } 
     }); 
    }, 100); 
} 

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

["MakeModeChange", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] 

А затем изменить функцию загрузки, чтобы выглядеть следующим образом :

function insertGraph(yAxis, xAxis, Header) { 
    setTimeout(function() { 
     chart.load ({ 
      bindto: "#graph", 
      xs: { 
       Header:'x' 
      }, 
      columns: [ 
       yAxis, 
       xAxis 
      ], 
     }); 
    }, 100); 
} 

Но тогда я получаю следующее сообщение об ошибке:

Uncaught Error: x is not defined for id = "MakeModeChange". 

Любая идея, как сделать эту работу?

ответ

1

Ваши x & y ось переменная/массивы неправильного пути вокруг? Я бы ожидал, что значения х-оси, чтобы быть 1, 2, 3, 4, etc и значения у-оси, чтобы быть 0, 131.35, etc.

Как бы то ни было, значение y в массиве будет название серии, а затем использовать xs object, чтобы указать массив значений x. Имя этого массива x-значений не имеет значения.

См./Выполните фрагмент кода ниже.

function createGraph(xAxis, yAxis, Header) { 
 

 
    // create the xs object with a key name of the header variable 
 
    var myxs = {}; 
 
    myxs[Header] = 'x'; 
 
    
 
    // set the 1st position value in the yaxis to the header 
 
    yAxis[0] = Header; 
 
    
 
    c3.generate({ 
 
    data: { 
 
     xs: myxs, 
 
     columns: [ 
 
     xAxis, 
 
     yAxis 
 

 
     ] 
 
    } 
 
    }); 
 
} 
 

 
createGraph(
 
    ["x", 0, 131.35, 26971.3, 27044.75, 27351.4, 27404.483333333334, 27419.416666666668, 33128.96666666667, 33549.13333333333, 34049.48333333333, 77464.26666666666, 77609.71666666666, 174171.85, 259166.98333333334], 
 
    ["y", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], 
 
    "Variable Name" 
 
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.10/c3.min.js"></script> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.10/c3.min.css" rel="stylesheet" /> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script> 
 
<div id='chart' />

+0

переменных имеет правильный путь вокруг (это только с помощью подсчета событий и безумных значений х являются переделанной меткой времени). И хотя я могу заставить его работать так, как вы делаете выше, вы определяете строку в xs как «Ваше имя», мне нужно, чтобы это значение передавалось в «Заголовок» в вызове функции (поскольку я не знаю, какое это значение будет, пока оно не пройдет). – Mike

+1

Хорошо, но легко использовать переданную переменную. Вы просто используете: 'xAxis [0] = Header;', чтобы перенести его в первую позицию массива, а затем ваш объект 'xs' просто должен быть' {Header: 'y'} '. Я обновлю фрагмент. – Sean

+0

Отлично! Скорректированный код работал точно так, как мне было нужно - спасибо за помощь! – Mike

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