2016-06-30 9 views
1

私のグラフィックにいくつかのテキストを配置したい。さて、xy座標を指定することで、これを手動で行うことができます。しかし、グラフのサイズが変わる可能性があり、その位置がハードコードされているため、これはおそらく最良の方法ではありません。Highchartsグラフにテキストと円を動的に配置しますか?

動的な方法で線の位置を導き出す方法はありますか?つまり、位置x = 1980のx/y座標は何ですか?それのためのHere is a fiddle

options.series.push(series); 

    options.chart.events = { 
     load: function() { 
     var chart = this; 
     chart.renderer.text('1970: Arbitrary chosen reference year: All cumulative values are relative to 1970.', xOffset, yOffset) 
      .css({ 
      fontSize: '13px', 
      color: '#aaa', 
      width: '550px' 
      }) 
      .add(); 

     chart.renderer.text('1980: observed loss in glacier thickness cumulates to 2 m w.e. since 1970.', 520, 220) 
      .css({ 
      fontSize: '13px', 
      color: '#7994d9', 
      width: '520px' 
      }) 
      .add(); 


     chart.renderer.text('1990: cumulative ice loss of 4 m w.e.', 690, 255) 
      .css({ 
      fontSize: '13px', 
      color: '#ff6c7f', 
      width: '320px' 
      }) 
      .add(); 

     } 
+1

私はあなたがredrawイベントコールバック関数を使うことができると思います。この関数の中では、Axis.toPixels(value)を使ってポイントのピクセル値を取得できます。ここであなたのサークルでどのように動作するかの例を見ることができます:http://jsfiddle.net/17ed42pa/7/ –

答えて

1

多分これはあなたを助けることができる:

var points = chart.series[1].points; 
for(var i = 0; i < points.length; i++) { 
    var point = points[i]; 
    if(point.x === 1980) { 
    console.log(point.plotX); //263.51049191606 
    console.log(point.plotY); //40.81559999999999 
    } 
} 

UPDATE配列に翻訳された場所の追加1

var locations = []; 
var points = chart.series[1].points; 
for(var i = 0; i < points.length; i++) { 
    var point = points[i]; 
    if(point.x === 1980 || point.x === 1990) { 
    locations.push({ 
     x: point.plotX + chart.yAxis[0].left, 
     y: point.plotY + chart.yAxis[0].top 
    }); 
    } 
} 

更新fiddle

+0

うわー、クール。本当にありがとう! – luftikus143

+0

ありがとうございます。しかし、私は理解できません。あなたはオフセットが必要であることを知っています。 – colapiombo

+0

@colapiomboオフセットを削除すると、テキストが間違った場所に追加されることがあります。正しいものになるようにテキストの位置をグラフの左上隅の位置でオフセットします。 – Arg0n

関連する問題