Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D3中javascript对象的线性cx缩放_Javascript_Json_D3.js - Fatal编程技术网

D3中javascript对象的线性cx缩放

D3中javascript对象的线性cx缩放,javascript,json,d3.js,Javascript,Json,D3.js,我试图绘制一个由javascript对象数组组成的简单数据集。以下是JSON格式的数组 [{"key":"FITC","count":24},{"key":"PERCP","count":16},{"key":"PERCP-CY5.5","count":16},{"key":"APC-H7","count":1},{"key":"APC","count":23},{"key":"APC-CY7","count":15},{"key":"ALEXA700","count":4},{"key":"E

我试图绘制一个由javascript对象数组组成的简单数据集。以下是JSON格式的数组

[{"key":"FITC","count":24},{"key":"PERCP","count":16},{"key":"PERCP-CY5.5","count":16},{"key":"APC-H7","count":1},{"key":"APC","count":23},{"key":"APC-CY7","count":15},{"key":"ALEXA700","count":4},{"key":"E660","count":1},{"key":"ALEXA647","count":17},{"key":"PE-CY5","count":4},{"key":"PE","count":38},{"key":"PE-CY7","count":18}]
每个对象只包含一个
字符串:“key”
,和一个
整数:“count”

现在,我在D3中绘制这些,如下所示

    function key(d) {
      return d.key;
    }

    function count(d) {
      return parseInt(d.count);
    }

    var w = 1000,
    h = 300,
    //x = d3.scale.ordinal()
          //.domain([count(lookup)]).rangePoints([0,w],1);
    //y = d3.scale.ordinal()
          //.domain(count(lookup)).rangePoints([0,h],2);

    var svg = d3.select(".chart").append("svg")
                .attr("width", w)
                .attr("height", h);

    var abs = svg.selectAll(".little")
                .data(lookup)
                .enter().append("circle")
                .attr("cx", function(d,i){return ((i + 0.5)/lookup.length) * w;})
                .attr("cy", h/2).attr("r", function(d){ return d.count * 1.5})

我关心的是如何映射我的“cx”坐标。x()缩放函数是否应该自动处理这个问题,而不是像我目前处理的那样进行缩放?我还尝试了.attr(“cx”,函数(d,I){returnx(I)})

我最终想做的是用适当的“键”标记这些圆。任何帮助都将不胜感激

更新:

我应该提到的是,当我处理一个仅包含计数的数组时,与对象数组相反,以下操作非常有效:

x = d3.scale.ordinal().domain(nums).rangePoints([0, w], 1),
y = d3.scale.ordinal().domain(nums).rangePoints([0, h], 2);

你的代码正在做你想做的…我刚刚添加了文本部分。这是你的电话号码


我注释掉了刻度,它们没有被使用……正如您已经指出的。

您在标题中提到了线性刻度,但顺序刻度出现在代码中。你的意思不是这样吗?谢谢,我一直在尝试这两种方法,但两种方法都没有对扩展我的代码产生影响。到目前为止,这两种比例都不用于操纵对象。我在选集中把它们注释掉了@EliranMalkaIt在文本锚定到中心时看起来更好。谢谢,正文部分很有帮助。你是对的,代码正在做我想做的事情,尽管我更喜欢通过索引来缩放它们,而不是用手动的“黑客”方式!通过这种方式,缩放位也可以用于文本定位。明白了…错过了您想要使用缩放的要点…当我稍后回来时,我可以处理它,除非有人同时这样做…这并不复杂。我想我可以做的是在生成对象时向其添加索引,简单地按此缩放。虽然我觉得这再次违背了D3缩放的目的:)@lennart我为你设计了一个简单的x-缩放。看见
var txt = svg.selectAll(".txt")
    .data(lookup)
    .enter().append("text")
    .attr("x", function (d, i) {
        return ((i + 0.5) / lookup.length) * w;
    })
    .attr("y", h / 2)
    .text(function(d) {return d.key;});