Raphaelで作成したグラフにオンマウス時になにか処理を追加してみます。
サンプルコード
HTML
<div id="chart"></div>
CSS
#chart { width: 600px; height: 600px; margin: 0 auto; }
JavaScript
// 棒グラフのデータ var barData = [110, 450, 870, 300, 630]; var barColor = ['#E74C3C', '#3498DB', '#2ECC71', '#9B59B6', '#34495e']; // 円グラフのデータ var pieData = [110, 450, 870, 300, 630]; var pieLabel = ['dataA', 'dataB', 'dataC', 'dataD', 'dataE']; var pieColor = ['#E74C3C', '#3498DB', '#2ECC71', '#9B59B6', '#34495e']; // 折れ線グラフのデータ var lineDataX = [ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] ]; var lineDataY = [ [-3.6, -3.1, 0.6, 7.1, 12.4, 16.7, 20.5, 22.3, 18.1, 11.8, 4.9, -0.9], [17.0, 17.1, 18.9, 21.4, 24.0, 26.8, 28.9, 28.7, 27.6, 25.2, 22.1, 18.7] ]; var lineColor = ['#3498DB', '#E74C3C']; window.onload = function () { var r = Raphael('chart'); // 棒グラフ r.text(150, 10, '棒グラフ'); r.barchart(10, 10, 280, 280, barData, { colors: barColor }).hover(function() { // 棒グラフオンマウス時のイベント this.flag = r.popup(this.bar.x, this.bar.y, this.bar.value).insertBefore(this); }, function() { // 棒グラフマウスアウト時のイベント this.flag.animate({ opacity: 0 }, 300, function() { this.remove(); }); }); // 円グラフ r.text(430, 10, '円グラフ'); r.piechart(430, 120, 90, pieData, { colors: pieColor, legend: pieLabel, piechart: 'east' }).hover(function() { // 円グラフオンマウス時のイベント this.sector.stop(); this.sector.scale(1.1, 1.1, this.cx, this.cy); if(this.label) { this.label[0].stop(); this.label[0].attr({ r: 7.5 }); this.label[1].attr({ 'font-weight': 'bold' }); } }, function() { // 円グラフマウスアウト時のイベント this.sector.animate({ transform: 's1 1 ' + this.cx + ' ' + this.cy }, 500, 'bounce'); if(this.label) { this.label[0].animate({ r: 5 }, 500, 'bounce'); this.label[1].attr({ 'font-weight': 'normal' }); } }); // 折れ線グラフ r.text(300, 300, '折れ線グラフ'); var lines = r.linechart(10, 310, 580, 280, lineDataX, lineDataY, { colors: lineColor, axis: '0 0 1 1', smooth: true, symbol: 'circle' }).hoverColumn(function() { // 折れ線グラフオンマウス時のイベント this.tags = r.set(); for (var i = 0, ii = this.y.length; i < ii; i++) { this.tags.push(r.tag(this.x, this.y[i], this.values[i], 160, 10).insertBefore(this).attr([ { fill: '#fff' }, { fill: this.symbols[i].attr('fill') } ])); } }, function() { // 折れ線グラフマウスアウト時のイベント this.tags && this.tags.remove(); }); lines.symbols.attr({ r: 4 }); };
Element.hover(f_in, f_out, [icontext], [ocontext]) | ホバーイベントを追加。 f_inにはホバー時の処理、f_outにはホバーを外した時の処理を指定。 |
---|---|
Paper.popup(x, y, text, dir, size) | ツールチップの表示。 x,yが表示する座標、textが表示するテキスト、dirが場所の指定(‘up’がデフォルトで’down’,’left’,’right’のいずれか)、sizeがテキスト周囲のパディング量を指定(デフォルトは5)。 |
Element.insertBefore() | 指定された要素の前に現在のオブジェクトを挿入。 |
Element.animate(params[, ms, easing, callback]) | アニメーションの指定。 基本jQueryとかと同じ指定方法。 |
Element.remove() | SVG上から要素を削除。 |
Element.stop([anim]) | 要素のアニメーションを停止。 |
Element.scale(sx, sy, [cx], [cy]) | 要素にscaleを追加。 |
linechart.hoverColumn(mouseover handler, mouseout handler, this) | 折れ線グラフのホバーイベントを追加。 |
Paper.set() | 複数の要素を動作させるためのオブジェクト(配列?)を作成。 |
Set.push() | 現在の各引数を追加。 |
Paper.tag(x, y, text, angle, r) | タグ型のツールチップを追加。 |
【参考サイト】
コメントが承認されるまで時間がかかります。