簡體   English   中英

轉換后通過selectAll進行D3過濾

[英]D3 Filter via selectAll after Transition

我嘗試構建一個交互式散點圖。 因此,我通過下拉菜單將不同的顏色應用於數據,如下所示:

    function color_drop_update (select, checkbox) {
    if (select == "gender") {
        holder.selectAll(".dot").style("fill", colorf_gender);
        holder.selectAll(".legend rect").style("fill", color_gender);
    }   

我還可以通過單選框和類似的轉換來更改繪制的軸:

function transition(dimension)  {
    if (dimension == "pca") {
        var xMap = xMap_pca;
        var yMap = yMap_pca;

        xScale.domain([d3.min(data, xValue_pca)-1, d3.max(data, xValue_pca)+1]);
        yScale.domain([d3.min(data, yValue_pca)-1, d3.max(data, yValue_pca)+1]);
    }
    else if (dimension == "tsne") {
        var xMap = xMap_tsne;
        var yMap = yMap_tsne;

        xScale.domain([d3.min(data, xValue_tsne)-1, d3.max(data, xValue_tsne)+1]);
        yScale.domain([d3.min(data, yValue_tsne)-1, d3.max(data, yValue_tsne)+1]);
    }

    // Update old
    circles.attr("class", "update")
        .transition()
            .duration(0)
            .attr("cx", xMap)
            .attr("cy", yMap);

    //Update Axis
    holder.select(".xaxis")
        .transition()
            .duration(0)
        .call(xAxis);  
    holder.select(".yaxis")
        .transition()
            .duration(0)
        .call(yAxis);

}

什么工作正常:

  • 過渡前使用不同的濾鏡和顏色信息
  • 過渡后會保留不同的濾鏡和顏色信息:先進行濾鏡再進行過渡(預期)

什么不起作用:

  • 選擇軸並隨后過濾:首先轉換然后過濾!

真的很感謝任何提示和幫助!

終於我明白了:

重要的是,即使在過渡中也要再次提及標記類:

        circles.attr("class", "update")
        .transition()
            .duration(0)
            .attr("cx", xMap)
            .attr("cy", yMap)
            .attr("class", "dot");

暫無
暫無

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

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