[英]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.