小编pax*_*man的帖子

d3不透明度转换闪烁最终状态

我有许多基本的不透明度过渡

emp_line.transition()
    .duration(1250)
    .attr('opacity', 1)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它们时,这些项目通常会闪烁到完全不透明,然后回到无,然后淡入.有没有办法防止这些内容闪烁?

javascript transition d3.js

9
推荐指数
1
解决办法
2万
查看次数

D3:使用嵌套函数将父键的平面数据转换为层次结构

我确信有一个非常简单的优雅方式来做到这一点,但我无法弄明白.我有一些看起来像这样的输入数据:

[
{id: 1, name: "Peter"},
{id: 2, name: "Paul", manager: 1},
{id: 3, name: "Mary", manager: 1},
{id: 4, name: "John", manager: 2},
{id: 5, name: "Jane", manager: 2}
]
Run Code Online (Sandbox Code Playgroud)

如果可能,我想使用d3.js嵌套操作符来获取在层次结构布局中使用的结构.像这样:

[ 
   {name: "Peter", children: [
          {name:"Paul", children: [
              {name:"John"},
              {name:"Jane"}
          ]},
          {name:"Mary"}
      ]
   }
]
Run Code Online (Sandbox Code Playgroud)

javascript json nested operators d3.js

8
推荐指数
1
解决办法
6149
查看次数

d3.js:如何在图表上为散点图添加标签

我正在尝试在此图表的散点上添加标签:http://bost.ocks.org/mike/d3/workshop/dot-chart.html

我认为稍微修改这段代码会起作用,但它没有:

svg.selectAll(".dot")
  .append("text")
  .text("fooLabelsOfScatterPoints");
Run Code Online (Sandbox Code Playgroud)

javascript charts scatter d3.js

7
推荐指数
1
解决办法
1万
查看次数

点击浏览器"后退"按钮显示JSON而不是HTML(使用Rails&d3.js)

我正在使用像这样的d3.js JSON回调在Rails中生成一个图表:

视图

d3.json(document.URL, function(data){ 
    // generate chart
}
Run Code Online (Sandbox Code Playgroud)

调节器

def index
    respond_to do |format|
        format.html do
            # return the HTML
        end
        format.json do
            # return the JSON
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,当用户离开此图表,然后使用其浏览器上的"后退"按钮导航回到它时,它们将显示JSON而不是HTML.

你能建议我怎么解决这个问题吗?

javascript charts json ruby-on-rails d3.js

6
推荐指数
2
解决办法
1667
查看次数

如何使小数位舍入到#的最接近倍数?

x.scale = d3.time.scale().domain(x.extent).range([0, dimensions.graph.width]);
Run Code Online (Sandbox Code Playgroud)

此代码使用x.extent[Wed Aug 01 2012 00:00:00 GMT+0300 (EEST), Tue Aug 07 2012 00:00:00 GMT+0300 (EEST)])和图形宽度(1000)生成x值刻度。但是,我需要将此值四舍五入到25(Math.round(x/25)*25)的最接近倍数。

通过这样做,我想获得精确的宽度刻度,现在将其定义为:

x.axis = d3.svg.axis()
    .ticks(d3.time.days, 1)
    .tickSize(10, 5, 0)
    .scale(x.scale);
Run Code Online (Sandbox Code Playgroud)

如何扩展x.scale到最接近的25的倍数?

javascript axis rounding d3.js

6
推荐指数
3
解决办法
3541
查看次数

d3.js:限制画笔的大小

有没有办法限制画笔的大小,即使范围更大?

我把一个只有x刻度的画笔放在一起,可以移动和调整大小.我希望能够限制用户可以调整大小的程度(基本上只能达到某一点).

在以下示例中,当画笔大于最大范围的一半时,画笔功能会停止更新.但是,刷子本身仍然可以延长.有没有办法防止这种情况发生?或者有更好的方法来处理这个问题吗?

非常感谢!

请在此处查看此代码:http://bl.ocks.org/3691274(编辑:此演示现在可用)

bar = function(range) {

      var x_range = d3.scale.linear()
          .domain([0, range.length])
          .range([0, width]); 

      svg.selectAll("rect.items").remove();

      svg.selectAll("rect.items")
          .data(range)
        .enter().append("svg:rect")
          .attr("class", "items")
          .attr("x", function(d, i) {return x_range(i);})
          .attr("y", 0)
          .attr("width",  width/range.length-2)
          .attr("height", 100)
          .attr("fill", function(d) {return d})
          .attr("title", function(d) {return d});
}

var start = 21;
bar(data.slice(0, start), true);

var control_x_range = d3.scale.linear()
    .domain([0, data.length])
    .range([0, width]); 

controlBar = svg.selectAll("rect.itemsControl")
    .data(data)
  .enter().append("svg:rect")
    .attr("class", "itemsControl")
    .attr("x", function(d, i) {return control_x_range(i);})
    .attr("y", 110)
    .attr("width",  width/data.length-2) …
Run Code Online (Sandbox Code Playgroud)

javascript brush range scale d3.js

6
推荐指数
1
解决办法
5649
查看次数

SVG上的下拉菜单?

我有一个svg画布,使用d3充满了有趣的数据可视化,我想在svg:rect元素上面出现一个传统的html下拉菜单.这可能吗?我意识到我可以使用foreignObject,但这与IE不兼容.

html javascript html5 svg d3.js

5
推荐指数
1
解决办法
6925
查看次数

在 d3.js 中从 csv 创建树层次结构

我读过许多有关类似主题的问题,但似乎没有一个答案适合我的用例(或者我真的很困惑)。

我有一个来自数据库的 csv 文件转储,我想使用此处找到的树状图示例来显示数据的层次结构http://mbostock.github.com/d3/ex/cluster.html

我的 csv 文件如下所示:

组流派、基本流派、值
地图,地图册(地理),10
目录、拍卖目录、28
没有更大的群体,学术论文,451
没有更大的组,账簿,1
没有更大的团体,离合诗,56
没有更大的组,地址,62
没有更大的团体,广告,790
没有更大的群体,寓言,35
没有更大的组,年鉴,3401
没有更大的组,字母,100
没有更大的群体,字谜,4
没有更大的团体,选集,133
没有更大的团体,反奴隶制文学,1

其中价值是该类型出版的书籍数量。

这是我根据下面的建议改编并修改的代码,也可以在http://dev.stg.brown.edu/projects/Egan/Vis/tree/tree.html找到

var width = 960,
    height = 2000;

var tree = d3.layout.tree()
    .size([height, width - 160]);

var diagonal = d3.svg.diagonal()
    .projection(function(d) { return [d.y, d.x]; });

var vis = d3.select("#chart").append("svg")
    .attr("width", width)
    .attr("height", height)
  .append("g")
    .attr("transform", "translate(40, 0)");

d3.csv("../data/genreNested.csv", function(csv) {

  var nodes = tree.nodes(makeTree(csv));

  var link = vis.selectAll("path.link")
      .data(tree.links(nodes))
    .enter().append("path")
      .attr("class", "link")
      .attr("d", diagonal);

  var …
Run Code Online (Sandbox Code Playgroud)

javascript csv charts d3.js

5
推荐指数
1
解决办法
7937
查看次数

Array.map()和D3选择?

是否有类似Array.map()D3选择的东西?为了找到所选SVG <text/>元素的最大长度,我目前正在执行以下操作.然而,.selectAll(...)[0].map(...)对我来说似乎是一个黑客.有没有更好的办法?

      var chi = svg.selectAll('.chi');

      var xChi = d3.max(chi[0].map(function (itm) { return itm.getComputedTextLength(); }));
Run Code Online (Sandbox Code Playgroud)

我可以用来selection.each()在选择上迭代一个函数,但我不知道如何将它与它结合起来d3.max().我试过了d3.max(chi.each(function (itm) { return itm.getComputedTextLength(); })),但d3.each()没有返回返回值的数组

javascript svg selector d3.js

5
推荐指数
1
解决办法
3668
查看次数

D3JS selectAll追加rect

令人惊讶的是d3.js简洁可视化数据.在这种简洁下隐藏的复杂性也使得它有点难以理解它是如何工作的.以下是http://mbostock.github.com/d3/ex/calendar.html中代码的一部分

问题是它如何在创建的svg数量内创建rect(var svg = d3 ....).在声明中svg.selectAll("rect.day"),我不确定它如何为每个svg附加rect(selectAll尝试选择rect.day!)

var margin = {top: 19, right: 20, bottom: 20, left: 19},
    width = 960 - margin.right - margin.left, // width
    height = 136 - margin.top - margin.bottom, // height
    cellSize = 17; // cell size

var day = d3.time.format("%w"),
    week = d3.time.format("%U"),
    percent = d3.format(".1%"),
    format = d3.time.format("%Y-%m-%d");


var svg = d3.select("#chart").selectAll("svg")
    .data(d3.range(1990, 2011))
  .enter().append("svg")
    .attr("width", width + margin.right + margin.left)
    .attr("height", height + margin.top + margin.bottom)
    .attr("class", "RdYlGn")
  .append("g") …
Run Code Online (Sandbox Code Playgroud)

javascript charts select svg d3.js

5
推荐指数
1
解决办法
8829
查看次数