ApexのD3力指向グラフに動的な凡例を追加するにはどうすればよいですか?

サラ

基本的にhttp://bl.ocks.org/mbostock/1093130またはhttp://bl.ocks.org/mbostock/4062045のようなD3力グラフをApexに組み込みました違いは、データベースのアドレステーブルからアプリケーションプロセスを使用してデータをプルすることです。それはうまく機能します。

ここに画像の説明を入力してください

ノードの色は、アドレスタイプ(連絡先、支払いオフィス、ライセンシーなど)によって定義されます。次に、グラフが使用しているさまざまな色と接続されている住所の種類を使用して、ページの横に凡例を追加します。

CSSインラインパーツのページ属性でそれを行うのですか、それともD3グラフのJavaScriptコードに何かを追加する必要がありますか。

これが私のコードです:

var graph;

function get_chart_data() {
var get = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=AddressData',$v('pFlowStepId'));  
var data_all = get.get(); 
var obj = eval ("(" + data_all + ")"); 
return obj;
}


function showChart2() {

graph = get_chart_data();

var width = 1000,
    height = 800;

var color = d3.scale.category20();

var force = d3.layout.force()
    .gravity(0)
    .charge(-400)
    .linkDistance(90)
    .size([width, height]);


var svg = d3.select("#chart2").append("svg")
    .attr("width", width)
    .attr("height", height);

var nodeById = d3.map();

    graph.nodes.forEach(function(node) {
    nodeById.set(node.id, node);
  });

  graph.links.forEach(function(link) {
    link.source = nodeById.get(link.source);
    link.target = nodeById.get(link.target);
  });

    force
      .nodes(graph.nodes)
      .links(graph.links)
      .start();

  var link = svg.selectAll(".link")
      .data(graph.links)
    .enter().append("line")
      .attr("class", "link")
      .style("stroke-width", function(d) { return Math.sqrt(d.value); });

  var node = svg.selectAll(".node")
      .data(graph.nodes)
    .enter().append("g")
      .attr("class", "node")
      .call(force.drag);

  node.append("circle")
      .attr("r", 8)
      .style("fill", function(d) { return color(d.type); })

  node.append("text")
      .attr("x", 12)
      .attr("dy", ".35em")
      .text(function(d) { return d.first_name; });

  force.on("tick", function() {
    link.attr("x1", function(d) { return d.source.x; })
        .attr("y1", function(d) { return d.source.y; })
        .attr("x2", function(d) { return d.target.x; })
        .attr("y2", function(d) { return d.target.y; });

    node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });

  });

};

あなたがそれを理解するのに十分にそれを説明したことを願っています。

サラ

何だと思いますか、私は自分の質問を解決しました:)

の最後にあるページ属性のJavaScript部分にコードを追加しましたfunction showChart2()が、まだその中にあります。

var legend = svg.selectAll(".legend")
    .data(color.domain())
    .enter().append("g")
    .attr("class", "legend")
    .attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; });

legend.append("rect")
    .attr("x", width - 18)
    .attr("width", 18)
    .attr("height", 18)
    .style("fill", color);

legend.append("text")
    .attr("x", width - 24)
    .attr("y", 9)
    .attr("dy", ".35em")
    .style("text-anchor", "end")
    .text(function(d) { return d; });

そして、これが完全に機能するコードです:

var graph;

function get_chart_data() {
var get = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=AddressData',$v('pFlowStepId'));  
var data_all = get.get(); 
var obj = eval ("(" + data_all + ")"); 
return obj;
}


function showChart2() {

graph = get_chart_data();

var width = 1000,
    height = 800;

var color = d3.scale.category20();

var force = d3.layout.force()
    .gravity(0)
    .charge(-400)
    .linkDistance(90)
    .size([width, height]);


var svg = d3.select("#chart2").append("svg")
    .attr("width", width)
    .attr("height", height);

var nodeById = d3.map();

    graph.nodes.forEach(function(node) {
    nodeById.set(node.id, node);
  });

  graph.links.forEach(function(link) {
    link.source = nodeById.get(link.source);
    link.target = nodeById.get(link.target);
  });

    force
      .nodes(graph.nodes)
      .links(graph.links)
      .start();

  var link = svg.selectAll(".link")
      .data(graph.links)
    .enter().append("line")
      .attr("class", "link")
      .style("stroke-width", function(d) { return Math.sqrt(d.value); });

  var node = svg.selectAll(".node")
      .data(graph.nodes)
    .enter().append("g")
      .attr("class", "node")
      .call(force.drag);

  node.append("circle")
      .attr("r", 8)
      .style("fill", function(d) { return color(d.type); })

  node.append("text")
      .attr("x", 12)
      .attr("dy", ".35em")
      .text(function(d) { return d.first_name; });

  force.on("tick", function() {
    link.attr("x1", function(d) { return d.source.x; })
        .attr("y1", function(d) { return d.source.y; })
        .attr("x2", function(d) { return d.target.x; })
        .attr("y2", function(d) { return d.target.y; });

    node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });

  });
var legend = svg.selectAll(".legend")
    .data(color.domain())
    .enter().append("g")
    .attr("class", "legend")
    .attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; });

legend.append("rect")
    .attr("x", width - 18)
    .attr("width", 18)
    .attr("height", 18)
    .style("fill", color);

legend.append("text")
    .attr("x", width - 24)
    .attr("y", 9)
    .attr("dy", ".35em")
    .style("text-anchor", "end")
    .text(function(d) { return d; });

};

私は自分の質問に答えられるとは思っていませんでしたが、うまくいきました;)

私はそれが他の誰かにも役立つことを願っています...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

d3の力指向グラフに新しいノードのみを追加するにはどうすればよいですか?

分類Dev

力指向グラフd3のエッジにテキストを追加するにはどうすればよいですか?

分類Dev

D3の棒グラフの棒にテキストの凡例を追加するにはどうすればよいですか?

分類Dev

d3の力有向グラフを拡大するにはどうすればよいですか?

分類Dev

matlabで棒グラフの3つの凡例を追加するにはどうすればよいですか?

分類Dev

力のレイアウトグラフのデータを動的に変更するにはどうすればよいですか?D3

分類Dev

D3力レイアウトグラフのノードとして画像を追加するにはどうすればよいですか?

分類Dev

SSRSの円グラフの凡例に列を追加するにはどうすればよいですか?

分類Dev

D3グラフのラベルに改行を含めるにはどうすればよいですか?

分類Dev

D3で円グラフの場所を変更するにはどうすればよいですか?

分類Dev

D3グラフのY軸を反転するにはどうすればよいですか?

分類Dev

d3グラフのデータを更新するにはどうすればよいですか?

分類Dev

ggplot2の同じグラフに異なる分位数の異なる凡例を追加するにはどうすればよいですか?

分類Dev

D3 V4折れ線グラフの拡大に従ってドットを移動するにはどうすればよいですか?

分類Dev

棒グラフに凡例を追加するにはどうすればよいですか?

分類Dev

matplotlib円グラフに凡例を追加するにはどうすればよいですか?

分類Dev

力指向グラフ:エッジの中央にアイコンを追加するにはどうすればよいですか?

分類Dev

時間の経過とともにズーム可能なd3折れ線グラフを描画するにはどうすればよいですか?

分類Dev

ノードがドラッグされたときにd3jsの力指向グラフの揺れを少なくするにはどうすればよいですか?

分類Dev

ソースを既存のグラフに動的に追加するにはどうすればよいですか?

分類Dev

D3:データファイルソースを変更してグラフを動的に更新するにはどうすればよいですか?

分類Dev

d3に異なる形状マーカーを追加するにはどうすればよいですか?

分類Dev

d3折れ線グラフの下の領域をグラデーションにするにはどうすればよいですか?

分類Dev

PrimeFacesで棒グラフの凡例の位置を変更するにはどうすればよいですか?

分類Dev

d3の値を更新するときに、円グラフでスムーズに移行するにはどうすればよいですか?

分類Dev

MPAndroidChart:棒グラフの凡例(使用されている色を説明するテキスト)を追加するにはどうすればよいですか?

分類Dev

Ruby on Railsで棒グラフの凡例を表示するにはどうすればよいですか?

分類Dev

このggplotグラフの凡例を変更するにはどうすればよいですか?

分類Dev

縦棒グラフの棒に異なる色を追加するにはどうすればよいですか

Related 関連記事

  1. 1

    d3の力指向グラフに新しいノードのみを追加するにはどうすればよいですか?

  2. 2

    力指向グラフd3のエッジにテキストを追加するにはどうすればよいですか?

  3. 3

    D3の棒グラフの棒にテキストの凡例を追加するにはどうすればよいですか?

  4. 4

    d3の力有向グラフを拡大するにはどうすればよいですか?

  5. 5

    matlabで棒グラフの3つの凡例を追加するにはどうすればよいですか?

  6. 6

    力のレイアウトグラフのデータを動的に変更するにはどうすればよいですか?D3

  7. 7

    D3力レイアウトグラフのノードとして画像を追加するにはどうすればよいですか?

  8. 8

    SSRSの円グラフの凡例に列を追加するにはどうすればよいですか?

  9. 9

    D3グラフのラベルに改行を含めるにはどうすればよいですか?

  10. 10

    D3で円グラフの場所を変更するにはどうすればよいですか?

  11. 11

    D3グラフのY軸を反転するにはどうすればよいですか?

  12. 12

    d3グラフのデータを更新するにはどうすればよいですか?

  13. 13

    ggplot2の同じグラフに異なる分位数の異なる凡例を追加するにはどうすればよいですか?

  14. 14

    D3 V4折れ線グラフの拡大に従ってドットを移動するにはどうすればよいですか?

  15. 15

    棒グラフに凡例を追加するにはどうすればよいですか?

  16. 16

    matplotlib円グラフに凡例を追加するにはどうすればよいですか?

  17. 17

    力指向グラフ:エッジの中央にアイコンを追加するにはどうすればよいですか?

  18. 18

    時間の経過とともにズーム可能なd3折れ線グラフを描画するにはどうすればよいですか?

  19. 19

    ノードがドラッグされたときにd3jsの力指向グラフの揺れを少なくするにはどうすればよいですか?

  20. 20

    ソースを既存のグラフに動的に追加するにはどうすればよいですか?

  21. 21

    D3:データファイルソースを変更してグラフを動的に更新するにはどうすればよいですか?

  22. 22

    d3に異なる形状マーカーを追加するにはどうすればよいですか?

  23. 23

    d3折れ線グラフの下の領域をグラデーションにするにはどうすればよいですか?

  24. 24

    PrimeFacesで棒グラフの凡例の位置を変更するにはどうすればよいですか?

  25. 25

    d3の値を更新するときに、円グラフでスムーズに移行するにはどうすればよいですか?

  26. 26

    MPAndroidChart:棒グラフの凡例(使用されている色を説明するテキスト)を追加するにはどうすればよいですか?

  27. 27

    Ruby on Railsで棒グラフの凡例を表示するにはどうすればよいですか?

  28. 28

    このggplotグラフの凡例を変更するにはどうすればよいですか?

  29. 29

    縦棒グラフの棒に異なる色を追加するにはどうすればよいですか

ホットタグ

アーカイブ