Вам необходимо принять во внимание расположение диаграммы, поэтому, если вы используете атрибуты 'left' и 'top', вы можете добавить половину ширины графика и вычесть половину ширины рамки для текста. Это даст точный центр:
text = chart.renderer.text("My Text").add();
textBBox = text.getBBox();
x = chart.plotLeft + (chart.plotWidth * 0.5) - (textBBox.width * 0.5);
y = chart.plotTop + (chart.plotHeight * 0.5) - (textBBox.height * 0.5);
text.attr({x: x, y: y});
Очевидно, ограничивающий прямоугольник будет равен 0 с, если вы не добавите его первым.
Исправление:
y = chart.plotTop + (chart.plotHeight * 0.5) + (textBBox.height * 0.25);
Итак, моя первоначальная мысль, и это казалось правильным, заключалась в том, что текст будет выровнен по левому верхнему углу, однако вместо этого это делается по левому нижнему углу. Таким образом, вместо того, чтобы вычитать половину высоты, нам нужно добавить ее. Что меня смущает, и что я пока не понимаю, так это то, что для получения центра вы прибавляете только 25% высоты, а не 50%. Примечание. Это не работает в IE 7 или 8.
ОСНОВНОЕ ОБНОВЛЕНИЕ
http://jsfiddle.net/NVX3S/2/
<- центрированный текст, который работает во всех браузерах </p>
Что делает это новое обновление, так это добавление нового элемента с помощью jquery после создания диаграммы. Это работает во всех браузерах, которые я тестировал (включая IE7, 8, 9, Firefox и Chrome).
var textX = chart.plotLeft + (chart.plotWidth * 0.5);
var textY = chart.plotTop + (chart.plotHeight * 0.5);
// The width and height need to be calculated properly, so I made it a span.
var span = '<span id="pieChartInfoText" style="position:absolute; text-align:center;">';
span += '<span style="font-size: 32px">Upper</span><br>';
span += '<span style="font-size: 16px">Lower</span>';
span += '</span>';
$("#addText").append(span);
span = $('#pieChartInfoText');
span.css('left', textX + (span.width() * -0.5));
span.css('top', textY + (span.height() * -0.5));