1

データの最小値/最大値のみを y 軸にしたいと思います。d3 ディレクティブを使用しようとしましたが、結果はありませんでした。

私はグーグルを見ましたが、この動作を達成するための答えが見つかりませんでした.

コードの下:

 $.getJSON('assets/json/chartc3.json', function(data) 
{ 

    scene=data;
    var chart = c3.generate({
    bindto: '#chartc3',
    data: 
        {

            json: scene,
            keys: 
            {
                    x: 'round',
                    value: ['Marketable', 'Total Requested Capacity', 'Your Bid'],
            },
            types: {
                Marketable: 'area'
            },
            colors: {
                Marketable: '#A09FA2',
                'Total Requested Capacity': '#272E80',
                'Your Bid': '#8EBF60'
            }
        },
    axis: 
    {
        x: {
            tick: 
            {
                culling: 
                {
                    max: 10
                }
            },
          type: 'category'
        },
        y: 
        {

            min: 0,
             padding : {
              bottom : 0
            },
            tick: 
            {
                values: [[0], [***d3.max(scene)]***],

                format:  function (d) { return d3.format(',f')(d) +' kWh/h' }
      //or format: function (d) { return '$' + d; }
            }
        }
      }.........

上記の結果をどのように達成できますか?d3.max(シーン) は NaN を返します。

4

3 に答える 3

1

問題は、シーンが配列ではなく、json オブジェクトであることです。

var k = d3.max([1,5,2])
k will be 5

そのため、y序数を構成する要素の配列を渡す必要があります。

于 2015-06-24T09:07:09.530 に答える
0

私は自分で最大値を計算するために小さな関数を使用しました。

var maxs=0;
    for (var j=0; j<scene.length; j++) {
        var maxtemp=Math.max(scene[j].Marketable, scene[j]['Your Bid'], scene[j]['Total Requested Capacity']);
        maxs=Math.max(maxs, maxtemp);
    }
于 2015-06-25T14:34:38.057 に答える
0

使用する必要があります

d3.max(arr, function(d){return numberic value});

また

var arr = scene.map(function(d){return ...the number value..})
y:{
    min:d3.min(arr),
    max:d3.max(arr)
},

関数は、データの配列要素に依存します。

于 2015-06-24T09:17:58.670 に答える