簡體   English   中英

從Sankey圖的圖例中排除實體

[英]Exclude entities from Legend in Sankey Diagram

我有一個帶有起點和終點的Sankey圖表。 使用以下功能創建圖例時。

我想從圖例中篩選出特定的節點(第一個和最后一個節點)。

節點名稱將始終相同,但是隨着節點數量的動態變化,它們的索引將不同。

這可能還是非常復雜?

我可以將過濾器或排除函數應用於

 svg.selectAll('.legendOrdinal .cell') .attr('transform', function(d,i) { // make 2 column legend var row = Math.floor(i / items_in_row) * element[0].offsetWidth/2; return 'translate(' + row +',' + (i % items_in_row) * 21 + ')'; }) 

  function render_legend(nodes) { var items_in_row = Math.ceil(nodes.length/2); d3.select(element[0]).select('#legend').remove(); var svg = d3.select(element[0]) .append("svg") .attr('width', '100%') .attr('height', ((items_in_row+1) * 25) + 'px') .attr('id', 'legend'); var ordinal = d3.scale.ordinal() .domain(nodes.map(function(d) { return d.name; })) .range(color.range()); // append legend text if (nodes.length != 0) { svg.append('text') .attr('x', 15) .attr('y', 15) .text('Enabling infrastructure investments:'); }; svg.append("g") .attr("class", "legendOrdinal") .attr("transform", "translate(20, 40)"); var legendOrdinal = d3.legend.color() .shape("path", d3.svg.symbol().type("circle").size(200)()) .shapePadding(5) .scale(ordinal); svg.select(".legendOrdinal") .call(legendOrdinal); svg.selectAll('.legendOrdinal .cell') .attr('transform', function(d,i) { // make 2 column legend var row = Math.floor(i / items_in_row) * element[0].offsetWidth/2; return 'translate(' + row +',' + (i % items_in_row) * 21 + ')'; }) }; 

您可以將過濾應用於domain呼叫嗎?

.domain(nodes.filter(function(d, i) {return i > 0 && i < N - 1; /*or anything else */})
             .map(function(d) {
                    return d.name;
                }))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM