我正在使用几个C3图表进行数据可视化。其中一个是一对仪表,应该使用我在线获取的JSON文件进行动态更新。我的问题是仪表值在更新时重叠,即当它获取65的读数时,以前的0值仍然存在。

我正在使用C3js版本0.4.7。

我的代码如下。请帮忙:

var gauge = c3.generate({
                bindto: d3.select('div#MeterGauge'),
                data: {
                        url: 'data/data.json',
                        mimeType: 'json',
                        type: 'gauge'
                },
                gauge: {
                //        label: 'One Value',
                //        min: 0,
                //        max: 100,
                //        units: '%',
                //        width: 50
                },
                color: {
                        pattern: ['#FF0000', '#F97600', '#F6C600', '#60B044'], // the three color levels for the percentage values.
                        threshold: {
        //            unit: 'value', // percentage is default
        //            max: 200, // 100 is default
                                values: [30, 60, 90, 100]
                                }
                },
                size: {
                        height: 200
                }
        });
        setTimeout(function () {
                gauge.load({
                        url: 'data/data.json',
                        mimeType: 'json',
                        keys: {
                                value: ['Another Value']
                        }
                });
        }, 2000);;

最佳答案

我可以使用相同版本的c3js,并使Gauge也可以处理XHR请求,请参阅jsfiddle中的工作代码:

var gauge = c3.generate({
            bindto: d3.select('div#MeterGauge'),
            //data: {
            //        url: 'data/data.json',
            //        mimeType: 'json',
            //        type: 'gauge'
            //},
            data: {
                columns: [
                    ['data', 91.4]
                ],
                type: 'gauge',
                onclick: function (d, i) { console.log("onclick", d, i);},
                onmouseover: function (d, i) { console.log("onmouseover", d, i);},
                onmouseout: function (d, i) { console.log("onmouseout", d, i); }
            },
            gauge: {
            //        label: 'One Value',
            //        min: 0,
            //        max: 100,
            //        units: '%',
            //        width: 50
            },
            color: {
                    pattern: ['#FF0000', '#F97600', '#F6C600', '#60B044'], // the three color levels for the percentage values.
                    threshold: {
    //            unit: 'value', // percentage is default
    //            max: 200, // 100 is default
                            values: [30, 60, 90, 100]
                            }
            },
            size: {
                    height: 200
            }
    });
    setTimeout(function () {
        gauge.load({
            columns: [['data', 10]]
        });
    }, 1000);

    //setTimeout(function () {
    //        gauge.load({
    //                url: 'data/data.json',
    //                mimeType: 'json',
    //                keys: {
    //                        value: ['Another Value']
    //                }
    //        });
    //}, 2000);


new Request.JSON({
  url: '/echo/json/',
  data: {
    json: JSON.encode({
        text: 'some text',
        array: [1, 2, 'three'],
        object: {
            par1: 'another text',
            par2: [3, 2, 'one'],
            par3: {}
        },
        percent: 44.8
    }),
    delay: 3
  },
  onSuccess: function(response) {
    update_gauge(response, $('post'));
  }
}).send();

var update_gauge = function(obj, result) {
   console.log('response '+obj.percent);
   gauge.load({
     columns: [['data', obj.percent]]
   });
};


http://jsfiddle.net/chetanbh/Lxkhzfv0/11/

请提供或分叉并修改上面的提琴,以提供越野车代码。

关于javascript - C3js量规值重叠,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27404452/

10-12 13:38