3
votes

I have a spiderweb graph with just the one data series. In the interests of printing I'd like to incorporate the value plotted in the label after the actual label name but I can't seem to work out how to do so.

This example to help explain what I mean is a bar-graph that I found in my search. The code layout is similar and a lot less cluttered than mine and I'm fairly sure a solution on this one would be easily transferable.

labels: {
    formatter: function() {
        return this.value + ' XX.X';
    }
}

JSFiddle Here

So for the X axis I'm trying to replace the "XX.X" with the relevant Y value to get the labels: "Foo 29.9 | Bar 71.5 | Foobar 106.4"

I dug through "this" in the xAxis labels formatter and got as far as finding the Y figures at "this.chart.series[0].yData", but couldn't work out a way to associate these back to each relevant X label, and I thought it seemed the wrong way of going about things anyway.

1

1 Answers

3
votes

You can do this after rendering of the chart in the chart.events.load method using setCategories. This code below assumes that each index element on the xAxis has a corresponding data element. If it doesn't then you would need to handle that case.

chart: {
    events: {
        load: function (event) {
            var cats = this.xAxis[0].categories;
            var theData = this.series[0].data;
            var newCats = [];

            for (var i = 0; i < cats.length; i++) {
                newCats.push(cats[i] + ' ' + theData[i].y)           
            }

            this.xAxis[0].setCategories(newCats);
        }
    }
}

Live demo.