【问题标题】:Scaling Axis with D3 JavaScript使用 D3 JavaScript 缩放轴
【发布时间】:2015-09-21 03:25:45
【问题描述】:

我已经绘制了 X 和 Y 轴。我有几个点要显示在轴上。我的点对于 X 轴从 4.5 到 8 和对于 Y 轴从 2 到 4 有所不同。

你可以找到我所做的DEMO

function kmeans(){
    x_means[0] = 5.9;

    plotMeans();
}

问题是这个图表显示了 0.59 等点。但是,我看不到何时给出 5.9 的值,因为它不在图表中。

关于如何解决这个问题的任何想法?

谢谢!

【问题讨论】:

    标签: javascript d3.js svg scaling axes


    【解决方案1】:

    如果你检查你的 javascript 控制台,你会看到这个错误:

    Error: Invalid value for <circle> attribute cy="NaN"
    

    这是因为您提供给 d3 的数据是:

    > numeric.transpose([[0.59],[]])
        Array[2]
          0: 0.59
          1: undefined
    

    这样:

    .attr("cy", function(d, i){return Y(d[1]);});
    

    是对未定义的操作。

    编辑

    别了,请重新阅读您的问题。您的秤需要一个,这是您的坐标空间的用户空间跨度。 range 是坐标空间的像素跨度。比例尺将两者映射在一起:

    var X = d3.scale.linear()
        .range([0, width]) //<-- 0 to 960 pixels
        .domain([0,10]); //<-- maps to coordinates 0 to 10
    

    查看更新here

    我还对其进行了修改以使用正确的轴,因此更易于可视化。

    【讨论】:

    • 谢谢。我应该如何更改我提供给 d3 的数据?我将不胜感激。
    • 我认为是因为这条线:var components = svg.selectAll("line.ax") .data([ [[0.0, 0.5], [1, 0.5], "X"], [[0.5, 0.0], [0.5, 1], "Y"] ], function(d, i){return d[2];}); 但我不知道应该如何更改这些数据值。
    • 你的线条画得很好。问题出在你的圈子里。你永远不会给y_means分配任何值...
    • 你是对的@Mark。我已经更新了 DEMO。但我的问题是,例如,当我给出值 x_means[0] = 5.9; y_means[0] = 2.7 时,这些值不会出现在图表上。
    • @supaplex,我不确定你在问什么?当您说“值”时,您想要轴值吗?看到这个example
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多