2017-05-16 33 views
1

在我使用highcharts lib的應用程序中,我使用svg draw函數來繪製我的圖表加載/重繪事件。如何在繪製圖之後更新highcharts中的renderer.text()?

我我所有的圖表數據設置爲相等的值,使所有的棧都會有相同的高度,而真正的數據被保存在以這種方式繪製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) 

該作品很好,但現在我想在回調函數中更改這些數據。 我仍然可以訪問渲染器對象,但我也無法找到舊的打印數據進行編輯,也找不到合適的編輯功能。

回答

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/

0

其實我找到了這個旁路解決方案。 在繪圖函數中,我添加了一個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)

相關問題