如何将json编码的数组加载为c3.js的x轴?

时间:2016-01-29 18:05:09

标签: javascript php arrays json c3.js

几乎是标题。我有一系列序列号,我想把它作为x轴。数组数据本身是通过PHP从数据库中提取的。然后我json_encode它并使其成为一个js数组。我遇到的问题是json:和列都有一个单独的部分:生成C3js图时。

var jsarray = <?php echo json_encode($array) ?>;
var chart = c3.generate({
    bindto: '#chart',
        data: {
            x: 'js_array',
            columns: [
                ['x', js_array]
            ],
            json: {
                Data_points,
                Data_points2    
            },
        axis: {
            y: {
                label: { // ADD
                    text: 'Y axis title',
                    position: 'outer-middle'
                }

            }
        }  
});

我尝试在c3.js文档中查找示例,但它们有单独的JSON数据部分并格式化x轴。我没有看到他们将两者结合在一起的部分。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望能够在使用JSON数据时标记X轴数据点,如下例所示:http://c3js.org/samples/data_stringx.html

假设您的PHP中的数据看起来像这样:

$php_data = array(
    'x_labels' => array('MON', 'TUE', 'WED', 'THU', 'FRI'),
    'data1' => array(30, 200, 100, 400, 150, 250),
    'data2' => array(50, 20, 10, 40, 15, 25)
);

...那么你应该能够使用像这样的JSON数据来实现类似于上面例子的东西:

var json_data = <?php echo json_encode($php_data) ?>;
var chart = c3.generate({
    bindto: "#chart",
    data: {
        x: 'x_labels',
        json: json_data
    },
    axis: {
      x: {
          type: 'category'
      },
      y: {
          label: 'number'
      }
    }
});

data: { x: 'x_labels' }部分告诉库使用数组键下的数据&#34; x_labels&#34;在轴标签处,然后在axis: { x: { type: 'category' } }下,我们指定我们要使用字符串作为标签类型而不是数字。如果您的轴标签是数字(例如'x_labels' => array(1, 2, 3, 4, 5)),则不必指定此项。

如果你想玩它,这里是一个小伙伴: https://jsfiddle.net/WingZero/Ldk4shLz/3/