Question

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.

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top