想要避免高图中每个堆叠条之间的间距?

时间:2015-02-03 10:02:57

标签: javascript jquery html css highcharts

我正在与Highcharts合作,遇到了一个我正在努力克服的问题。

我创建了一个jsfiddle,以便您可以看到我的问题:

http://jsfiddle.net/jo_pappi/0e5h8sts/3/ [A]

如你所见

Needed Output format

我可以在highcharts中实现上述格式,因为此图表是基于动态数据进行渲染当单个组值到达时,highcharts会在条形图之间留下如此大的空间。我在这附加图像

代码

$('#container-one').highcharts({
    chart: {
        type: 'bar',
        events: {
            click: function (event) {
                console.log(event.pageX + ',' + event.pageY);
            }
        }
    },

    credits: {
        enabled: false
    },

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

    xAxis: {
        categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas'],
        minPadding: 1.1,
        maxPadding: 1.1
    },

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

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

    plotOptions: {
        // column: {
        //     stacking: 'normal'
        // }
        series: {
            pointWidth: 20,
            stacking: 'normal',
            borderWidth: 0,
            events: {
                click: function (event) {
                    //reloadFlash();
                    //$('#report').html('click on yAxis title');
                    console.log(event.pageX + ',' + event.pageY);
                }
            }
        }
    },

    series: [{
        name: 'John',
        color: 'rgba(89,89,89,1)',
        data: [5],                     // data: [5, 3, 4, 7, 4],
        stack: 'male',
        pointPadding: -0.0,
        pointPlacement: -0.0
    }, {
        name: 'Joe',
        color: 'rgba(255,95,215,1)',
        data: [3],                    // data: [3, 4, 4, 2, 2],
        stack: 'male',
        pointPadding: -0.0,
        pointPlacement: -0.0
    }, {
        name: 'Jane',
        color: 'rgba(217,116,0,1)',
        data: [2],                    // data: [2, 5, 6, 2, 1],
        stack: 'female',
        pointPadding: -0.0,
        pointPlacement: -0.0
    }, {
        name: 'Janet',
        color: 'rgba(155,215,255,1)',
        data: [3],        // data: [3, 0, 4, 4, 3],
        stack: 'female',
        pointPadding: -0.0,
        pointPlacement: -0.0
    }]

});

Image shows the problem

如何减少条形之间的空间?

如果更改图表的高度是一个解决方案意味着我如何动态实现这一点?

3 个答案:

答案 0 :(得分:2)

删除&#34; pointWidth&#34; 解决了条之间的空白区域。但我需要在所有可能的情况下,杆应该在相同的高度。我通过根据类别计数动态设置高度来解决问题。例如,如果我只有一个类别我已经将图表的高度设置为&#34; 210&#34;适用于2类&#34; 270&#34;像那样。并删除了pointWidth。

$('#container-one').highcharts({

    chart: {
        type: 'bar',
        height: 210,
        ...
        .
        .
    plotOptions: {
        bar: {
            pointPadding: 0,
            borderWidth: 0
        },
        series: {
            //pointWidth: 20,
            stacking: 'normal',
        .
        .
});

当我有两个类别时,我将图表高度设置为 270

$('#container-two').highcharts({

    chart: {
        type: 'bar',
        height: 270,
        ...
        .
        .
    plotOptions: {
        bar: {
            pointPadding: 0,
            borderWidth: 0
        },
        series: {
            //pointWidth: 20,
            stacking: 'normal',
        .
        .
});

Fiddle Link

可能是我做错了。但它解决了我的问题。如果我错了,请纠正我。

全部谢谢

答案 1 :(得分:1)

你在使用什么'pointWidth:20'?这就产生了问题..你还给出了类别:['苹果','橘子','梨子','葡萄','香蕉'] 即使这些数据仅适用于苹果..一个解决方案是动态生成类别..例如,如果数据只来自苹果推送类别数组中的苹果。之后你可以使用:

 _chart.setSize(width,height)

动态设置高图的新高度和宽度的方法。同时删除 pointWidth 也可以解决问题......

答案 2 :(得分:0)

您可以使用的选项是:

plotOptions:{
    bar:{
        pointPadding: 0,
        groupPadding: 0,
    }
}

但你也需要强制你的条点宽度。

卸下:

series: {
            pointWidth: 20,

http://jsfiddle.net/d9f8b22x/

API文档讨论了这些选项如何相互关联:

http://api.highcharts.com/highcharts#plotOptions.column.pointPadding