皆さん-
Mike Bostock の「Mobile Patent Suits」に基づいて、Viz にツールチップを追加しようとしています。
http://bl.ocks.org/mbostock/1153292
以下からオブジェクトを拡張しました。
{ソース:「ノキア」、ターゲット:「クアルコム」、タイプ:「スーツ」}
{source: "Nokia", target: "Qualcomm", type: "suit", tooltip: "my comment here"} へ
https://gist.github.com/milroc/2975255 d3 ヘルパー ツールチップ JS をスクリプトに追加しました
ツールチップ オブジェクトを作成しました:
var tooltip = d3.select("body")
.append("div")
.style("position", "absolute")
.style("z-index", "70")
.style("visibility", "hidden");
そしてそれを呼んだ:
var circle = svg.append("svg:g").selectAll("circle")
.data(force.nodes())
.enter().append("svg:circle")
.call(d3.helper.tooltip(function(d,i){return d.name;}))
.attr("r", 6)
.call(force.drag);
これは正常に動作しますが、次のように変更すると:
.call(d3.helper.tooltip(function(d,i){return d.tooltip;}))
「未定義」になります。以前にd3オブジェクトにプロパティを追加し、ツリー図を使用してツールチップとして呼び出すことができました。ここで別の方法で何をする必要があるのか わかりません。
ありがとう、
ラルフ
編集:
(まずラースに感謝!)
ツールチップの 2 番目のセットを追加しようとしていますが、「ノード」ではなくオブジェクト「リンク」の構造のように見えます。円をロールオーバーすると、「ソース」または「ターゲット」の「nameLabel」ツールチップが生成されるかどうかが問題になります。 '
拡張オブジェクト:
{source: "First", target: "Second", type: "dependency", tooltip: "tip for rollover of path", nameLabel: "tip for rollover of circle"}
作業パスのツールチップ:
var path = svg.append("svg:g").selectAll("path")
.data(force.links())
.enter().append("svg:path")
.attr("class", function(d) { return "link " + d.type; })
.attr("marker-end", function(d) { return "url(#" + d.type + ")"; })
.call(d3.helper.tooltip(function(d,i){return d.tooltip;}));
危険な円のツールチップ:
var circle = svg.append("svg:g").selectAll("circle")
.data(force.nodes())
.enter().append("svg:circle")
.call(d3.helper.tooltip(function(d,i){return d.nameLabel;}))
.attr("r", 12)
.call(force.drag);
これが機能するため、ツールチップは円を認識します。
.call(d3.helper.tooltip(function(d,i){return d.name;}))
だから私は名前を渡すことができると思った関数を構築しました:
function whatTip(theName) {
var fullArray = new Array;
var fullArray = (("FIRST","first tooltip"),("SECOND","second tooltip"),("THIRD","THIRD tooltip"),("FIFTH","FIFTH tooltip"),("SIXTH","sixth tooltip"),("FOURTH","FOURTH tooltip") );
for(var i=0;i<fullArray.length;i++){
if (fullArray[i][0] == theName) {
return fullArray[i][1];
}}}