javascript - d3 hexbin 缩放问题

标签 javascript d3.js

我正在尝试学习如何使用 d3.js hexbin 插件。

我从这个例子开始:http://bl.ocks.org/mbostock/4248145 ,我正在对其进行调整。

我有一个介于 [0,0] 和 [600,600] 之间的点数据集。我想将它们输出到 300,300 的图表中。

我的图表看起来不正确。数据似乎未正确缩放,并且图表仅显示 1/4 的数据。有人能告诉我出了什么问题吗?我读过一本关于使用 d3 的书,但我没有太多使用它的经验。

Jsfiddle of my hexbin

var graph_width = 300;
var graph_height = 300;

var data_width = 600;
var data_height = 600;

var randomX = d3.random.normal(data_width / 2, 80),
    randomY = d3.random.normal(data_height / 2, 80),
    points = d3.range(2000).map(function() { return [randomX(), randomY()]; });

var color = d3.scale.linear()
    .domain([0, 20])
    .range(["white", "steelblue"])
    .interpolate(d3.interpolateLab);

var hexbin = d3.hexbin()
    .size([graph_width, graph_height])
    .radius(20);

var x = d3.scale.linear()
    .domain([0, data_width])
    .range([0, graph_width]);

var y = d3.scale.linear()
    .domain([0, data_height])
    .range([0, graph_height]);

var svg = d3.select("body").append("svg")
    .attr("width", graph_width)
    .attr("height", graph_height)
  .append("g");

svg.append("clipPath")
    .attr("id", "clip")
  .append("rect")
    .attr("class", "mesh")
    .attr("width", graph_width)
    .attr("height", graph_height);

svg.append("g")
    .attr("clip-path", "url(#clip)")
  .selectAll(".hexagon")
    .data(hexbin(points))
  .enter().append("path")
    .attr("class", "hexagon")
    .attr("d", hexbin.hexagon())
    .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
    .style("fill", function(d) { return color(d.length); });    

最佳答案

我想我明白了。您的数据值在 0 到 600 范围内,但希望将这些值映射到 0 到 300 范围内的 x/y 位置。

如果是这样,则缩放点:

var x = d3.scale.linear()
    .domain([0, data_width])
    .range([0, graph_width]);

var y = d3.scale.linear()
    .domain([0, data_height])
    .range([0, graph_height]);

var randomX = d3.random.normal(data_width / 2, 80),
    randomY = d3.random.normal(data_height / 2, 80),
    points = d3.range(2000).map(function() { return [x(randomX()), y(randomY())]; });

已更新fiddle .

关于javascript - d3 hexbin 缩放问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28385858/

相关文章:

javascript - JQuery Click 事件使程序崩溃,没有控制台错误

javascript 如何在函数内部调用函数

javascript - 将 SVG 线置于前面

html - NVD3 图表上的 margin

javascript - 如何反转 d3 的线性比例?

javascript - 删除 d3.js 面积图中沿轴的轮廓

javascript - 从数组中删除第一个元素并返回数组减去第一个元素

javascript - 有react redux调度计划吗?

javascript - 根据 mimetype 按类型对文件进行排序的最佳方法

javascript - 无法使用折叠图获取路径链接之间的点击事件