在highcharts中为每列设置不同的宽度

时间:2011-10-16 08:56:47

标签: javascript highcharts

我需要为图表中的每一列设置不同的宽度...宽度取决于yaxis值...例如,如果yaxis值为23,则具有此值的列的宽度将为50px且值必须为在列的中间。如果yaxis值是234:宽度必须是70px并且列中间的值...我怎么能这样做? 我的图表是:

options = {
    chart: {
        renderTo: 'chart',
        type: 'column',
        width: 450
    },

    title: {
        text: 'A glance overview at your contest’s status'
    },

    xAxis: {
        categories: ['Approved Photos', 'Pending Approval Photos', 'Votes', 'Entrants'],
        labels: {
            //rotation: -45,
            style: {
                font: 'normal 9px Verdana, sans-serif, arial'
            }
        }
    },

    yAxis: {
        allowDecimals: false,
        min: 0,
        title: {
            text: 'Amount'
        }
    },

    legend: {
        enabled: false
    },

    series: []
};

series = {
    name: "Amount",
    data: [],
    dataLabels: {
        enabled: true,
        color: '#000000',
        align: 'right',
        x: -10,
        y: 20,
        formatter: function () {
            return this.y;
        },
        style: {
            font: 'normal 13px Verdana, sans-serif'
        }
    }
};

我以这种方式设定价值:

    var colors = Highcharts.getOptions().colors;        
    var index = 0;
    options.series = [];
    series.data = [];
    for (var i in Data) {
        if (parseInt(Data[i]) != 0) {
            series.data.push({ y: parseInt(Data[i]), color: colors[index]            });
            index++;
        }
        else {
            series.data.push(null);
        }
    }
    options.series.push(series);
    chart = new Highcharts.Chart(options);

2 个答案:

答案 0 :(得分:0)

这是您正在寻找的http://jsfiddle.net/YCf9z

你可以使用

来解决这个问题
pointPadding: 0.1

希望这对你有用

答案 1 :(得分:0)

在Highcharts中,一个系列只能有一个宽度,因此如果您想让每个条形成另一个宽度,请将数据拆分为系列并使用pointWidth来设置宽度。