如何pinPoint高图分组条形图变量

时间:2015-11-18 02:59:33

标签: javascript html highcharts bar-chart column-chart

我试图根据用户可以手动处理的滑块来更改条形的高度。

http://jsfiddle.net/h0ow9kLk/2/ 示例代码:

HTML

<script src="https://code.highcharts.com/highcharts.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
    <form oninput="output1.value=slider1.value">
        <input type="range" name="slider1" id="slider1" min="17" max="25"/>
        <output name="output1" for="slider1"></output>
    </form>
    <form oninput="output2.value=slider2.value" >
        <input type="range" name="slider2" id="slider2"  min="5000" max="5000" step="5"/>
        <output name="output2" for="slider2"></output>
    </form>
<button id="updater">Update</button>

的Javascript

$(function () {
  $('#container').highcharts({

        chart: {
            type: 'column'
        },

        title: {
            text: 'Total fruit consumtion, grouped by gender'
        },

        xAxis: {
            categories: ['Resistance', 'FuelConsumed', 'FuelCost', 'Grapes', 'Bananas']
        },

        yAxis: {
            allowDecimals: false,
            min: 0,
            title: {
                text: 'Number of fruits'
            }
        },

        tooltip: {
            formatter: function () {
                return '<b>' + this.x + '</b><br/>' +
                    this.series.name + ': ' + this.y + '<br/>' +
                    'Total: ' + this.point.stackTotal;
            }
        },

        plotOptions: {
            column: {
                stacking: 'normal'
            }
        },

        series: [{
            name: 'Ship 1',
            data: [5, 3, 4, 7, 2],
            stack: 'Ship 1'
        }, 
                 {
            name: 'Ship 2',
            data: [3, 0, 4, 4, 3],
            stack: 'Ship 2'
        }]

    });
    var $slider = $("#updater");

                    $slider.bind('click', function(e) {
                    e.preventDefault();

                var speed = $("#slider1").val();
                var weight = $("#slider2").val();
                var fuel;

                       if(weight == 5000){

                       if     (speed == 17){fuel = 41; }
                       else if(speed == 18){fuel = 51; }
                       else if(speed == 19){fuel = 60; }
                       else if(speed == 20){fuel = 75; }
                       else if(speed == 21){fuel = 80; }
                       else if(speed == 22){fuel = 100; }
                       else if(speed == 23){fuel = 120; }
                       else if(speed == 24){fuel = 138; }
                       else if(speed == 25){fuel = 153; }

                       }
                       else{ fuel = 0;} 
                        chartColumn.series[0].data[0].value[0].update(parseInt(fuel));
                    nv.utils.windowResize(chart.update);     
                });
});

所以更新代码:chartColumn.series [0] .data [0] .value [0] .update(parseInt(fuel));

底部的

用于尝试更新第一个栏。 但是我假设路径是错误的,因为栏的高度没有变化。

我试图做的一个例子就是这个 http://jsfiddle.net/ZmnWq/74/

我是否可以在某处学习如何使用正确的路径获取数据,如果可能,有人可以告诉我如何更改数据值。

这个问题听起来很基本,但我真的很陌生。感谢所有帮助!

谢谢!

1 个答案:

答案 0 :(得分:1)

在您的示例中,只删除值[0]将起作用。您需要将高图分配给某个对象(在示例chartColumn中),以便稍后可以根据该图表对象更改值。在你的情况下,它是未定义的。

要为您的系列添加新点,您可以使用以下代码。详细信息可以在here找到。

chartColumn.series[0].addPoint([x, 5], false, true);

要添加全新系列,您可以添加以下代码。

chartColumn.addSeries({
    name: "ship 3",
    data: [4,5,6,7,8]
}, false);

chartColumn.redraw();

要使用新值更改整个系列,您可以使用setData,它将自动重绘图表。

chartColumn.series[0].setData(data,true);

可以找到您的例子的工作小提琴here

有关轴更新的更多详细信息,请参阅以下文档。

http://api.highcharts.com/highcharts#Axis.update