如何在绘制图形后更新highcharts中的renderer.text()?

时间:2017-05-16 09:10:40

标签: javascript svg highcharts

在我的使用highcharts lib的应用程序中,我使用svg draw函数来处理图表加载/重绘事件。

我将所有图表数据设置为相等的值,以便所有堆栈具有相同的高度,而实际数据保存在以这种方式绘制为svg的临时数组中:

var dataFormat = getLabelByStatus(curCount, yearsObj[i].data[0]);

                        var css = (point.color == USERS_YEARS_COLOR) ? highchartAttr().dataLabelsBoldStyle : highchartAttr().dataLabelsStyle;

                        //  draw text
                        var text = renderer.text(dataFormat, -9999, -5).add(point.label);

                        text.attr({
                            x: (lineLength - text.getBBox().width) / 3
                        }).css(css)

这很好但现在我想在回调函数中更改此数据。 我仍然可以访问渲染器对象,但我都无法找到我的旧打印数据进行编辑,也无法找到合适的编辑功能。

2 个答案:

答案 0 :(得分:1)

实际上我找到了一个旁路解决方案。 在draw函数中,我添加了一个id属性,以便稍后使用jquery选择器轻松获取它并使用.text()进行编辑。

text.attr({
                            x: (lineLength - text.getBBox().width) / 3,
                            id: 'text_' + i // id added to make it modifiable
                        }).css(css)

更改回调函数中的文本示例:

$('#text_2').children().text(435)

答案 1 :(得分:1)

您可以将自定义文本元素保存在变量或图表中,如

    chart.customText = chart.renderer.text('Series 1', 140, 140)
    .attr({
        rotation: -25
    })
    .css({
        color: '#4572A7',
        fontSize: '16px'
    })
    .add();

然后您可以访问它并使用attr({text})更改其文字

chart.customText.attr({
  text: Math.random()
})

示例:http://jsfiddle.net/28nwb7pj/