【问题标题】:d3.js how to get minimum value of scale's domain when using nice()d3.js 使用 nice() 时如何获取规模域的最小值
【发布时间】:2014-10-31 18:09:03
【问题描述】:

我有一个散点图,我试图绘制一个应该直接出现在 x 轴上的参考点,但我正在创建 y 轴,如下所示:

   // give ourselves some space
    yMin = yMin * 0.9;
    yMax = yMax * 1.1;

    // set up y
    var yValue = function (d) {
            return d.price;
        },
        yScale = d3.scale.linear()
            .domain([yMin, yMax])
            .range([height, 0])
            .nice(),
        yAxis = d3.svg.axis()
            .scale(yScale)
            .orient("left");

问题是我想直接在 x 轴上绘制一个参考点。如果我不使用 .nice(),我可以像这样轻松地绘制参考点:

        var reference = svg.append('g').attr("class", "grid-reference");
        reference.append("circle").attr("id", "some-reference-value")
            .attr("class", "dot")
            .attr("r", 9)
            .attr("cx", xScale(someReferenceValue))
            .attr("cy", yScale(yMin))
            .style("fill", "grey")
            .style("opacity", 1);

但我似乎不知道在使用 .nice() 时如何做到这一点。有没有其他方法可以解决这个问题,例如以某种方式获取 x 轴线的 y 坐标?

我开始深入研究 d3 代码,看看如何计算 nice 值,我理解代码,但再次计算值似乎很浪费,更不用说对重复代码进行不必要的维护 - 特别是考虑到我也有参考我需要沿 y 轴绘制点,并且我对 x 轴使用对数刻度(对数 nice() 函数与线性 nice() 函数不同,因此这意味着额外的重复代码和不必要的维护) .

想法?

【问题讨论】:

  • 在.nice()yScale.domain()[0]之后。

标签: javascript d3.js


【解决方案1】:

您可以在.nice() 之后简单地查询其域的比例,然后得到它的最小值:

var yMin = yScale.domain()[0];

【讨论】:

    猜你喜欢
    • 2013-12-04
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多