来自JSON属性的D3 javascript颜色

时间:2013-08-27 09:45:31

标签: javascript jquery json d3.js

使用D3 Javascript和JSON,我需要创建一些非常类似于:

的东西

http://bl.ocks.org/mbostock/4063550

JSON文件(从网站复制)看起来像:

{
 "name": "flare",
 "children": [
  {
   "name": "analytics",
   "children": [
    {
     "name": "cluster",
     "children": [
      {"name": "AgglomerativeCluster", "size": 3938},
      {"name": "CommunityStructure", "size": 3812},
      {"name": "HierarchicalCluster", "size": 6714},
      {"name": "MergeEdge", "size": 743}
     ]
    },

现在代替上面代码中的“大小”,我有“得分”(即“得分”:3)。

我想要实现的是类似于网站的图表,但不同之处在于分数超过某个阈值(例如> 5),我希望小蓝色圆圈具有某种颜色(即红色)。

我知道这需要在index.html文件中更新,但我只是不知道如何解决这个问题。任何指针都将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要做的就是稍微修改附加circle的代码。您需要更改代码段

node.append("circle")
  .attr("r", 4.5);

node.append("circle")
  .style("stroke", function(d) { return d.score > 5 ? "red" : "steelblue"; })
  .attr("r", 4.5);

您显然可以将此类内容应用于例如填充颜​​色的方式相同。如果您有更多不同的颜色和阈值,则可能值得使用scale而不是条件语句进行调查。

答案 1 :(得分:0)

像这样更改你的JSON:

{
 "name": "flare",
 "children": [
  {
   "name": "analytics",
   "children": [
    {
     "name": "cluster",
     "children": [
      {"name": "AgglomerativeCluster", "score": 3938},
      {"name": "CommunityStructure", "score": 3812},
      {"name": "HierarchicalCluster", "score": 6714},
      {"name": "MergeEdge", "score": 743}
     ]
    },

现在使用函数检查数据中的条件并设置圆的样式:

node.append("circle")
      .attr("r", 4.5)
      .style("fill",function(d){
          return ((d.score > 5)?"red":"blue");
      });