首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >d3检查类型并相应地设置类型

d3检查类型并相应地设置类型
EN

Stack Overflow用户
提问于 2016-03-12 19:04:52
回答 1查看 74关注 0票数 0

我正在使用d3中的散点图,图中的点代表不同的论文。图表上的论文可以有不同的类型。In_library,cites,cited_by-每种类型都有不同的颜色。在点击类型为In_library的论文时,从数据库中检索被点击的论文引用的论文和引用被点击的论文的论文,并根据其类型在图形上显示为不同的颜色。

我遇到的问题是,例如,最初在图表上显示了4篇论文,它们都是In_library类型的。当我点击其中一个时,链接到它的论文就会出现。但我想要的是,如果一篇论文引用或被一篇已经属于In_library类型的论文引用(已经在图表上),我希望将其识别为In_library,并将其类型更改为“组合”类型,而不是将其更改为" cites“或”selected by“类型,这样在视觉上我仍然知道它在库中,但它也是一篇链接到所选论文的论文。这是到目前为止我检查检索到的论文是否属于"In_library“类型的相关代码,如果是,将类型更改为"combo",否则将其类型指定为"cites”或"cited“(取决于它所在的连接)。

代码语言:javascript
复制
function clickHandler (d, i) {

d3.json("connection2.php?paperID="+d.ID, function(error, dataJson) {

                dataJson.forEach(function(d) {

                    d.YEAR = +d.YEAR;
                    d.counter = +d.counter;
                    if (d.type === "In_library") {

                        d.type = "combo";
                        }
                    else d.type = "cited by";


                allData.push(d);
    }
})          
}

感谢任何帮助我是d3的新手,但如果我尝试做的事情不可行,但如果有其他方法实现这一点,我也将不胜感激。提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-03-13 01:21:48

在我看来,您在这里尝试得太过努力了,并且没有利用d3功能。您有一堆唯一标识的圆;当您绘制曲线图时,您希望那些新绘制的圆圈具有某种颜色。当更新时,您希望那些已经存在的颜色是新的颜色。这听起来是为enter/update/exit pattern量身定做的。

代码语言:javascript
复制
 function update(data){

    // this is our overall update selection
    var sel = svg.selectAll('circle')
      .data(data, function(d,i){
        return d.id;
      });

    // those that are updated
    // mark with combo class
    sel.attr("class", "combo");

    // these are the newly arriving guys
    sel.enter()
      .append("circle")
      .attr('cx', function(d){
        return s(d.x);
      })
      .attr('cy', function(d){
        return s(d.y);
      })
      .attr('r', 25)
      .attr("class", "in_library");
  }

这是一个quick example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35956835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档