【问题标题】:D3 Javascript plotting functionD3 Javascript 绘图功能
【发布时间】:2012-01-13 07:27:48
【问题描述】:

我正在尝试写一篇关于 d3 的教程,但我找到了几个可以提供帮助但没有足够详细信息的网站。

我有以下输出条形图的代码:

<html>
<head>
<div id="mainGraph">
        </div>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript">

var t = 1, // start time (seconds since epoch)
    v = 0, // start value (subscribers)
    data = d3.range(33).map(next); // starting dataset

 function next() {
   return {
    time: ++t,
     value: v = ~~Math.max(10, Math.min(80, Math.exp(t)))
   };
}
setInterval(function() {
   data.shift();
   data.push(next());
 }, 1500);

  var w = 40,
      h = 100;

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

  var y = d3.scale.linear()
      .domain([0, 100])
     .rangeRound([0, h]);

     var chart = d3.select("body")
     .append("svg:svg")
     .attr("class", "chart")
     .attr("width", w * data.length + 10)
     .attr("height", h);

     chart.selectAll("rect")
     .data(data)
    .enter().append("svg:rect")
     .attr("x", function(d, i) { return x(i) + 5; })
     .attr("y", function(d) { return h - y(d.value) + 5; })
     .attr("width", w)
     .attr("height", function(d) { return y(d.value); });

     chart.append("svg:line")
     .attr("x1", 0)
     .attr("x2", w * data.length)
     .attr("y1", h + 5)
     .attr("y2", h + 5)
     .attr("stroke", "#000");





    </script>           
    </body>
    </html>

第一个问题是function()是做什么的

第二个问题是当我尝试更改数据集时,我试图将 v 置于 t 的函数中,例如 v = Math.exp (t) 这不起作用,即使我更改了最大值和最小值的间隔,它也只给了我一条黑线。 谢谢。

【问题讨论】:

  • 回答了您的第一个问题,您可以为您的第二个问题设置一个 jsfiddle 示例吗?
  • @DominicGoulet 这是我尝试使用此代码绘制函数的示例。可能我没有明白你关于设置 jsfiddle 示例的意思。
  • 转到jsfiddle.net 并设置不适合您的示例。然后,在此处发布 jsfiddle 链接,以便我们可以分叉您的代码并使其工作。
  • 好的,这是 jsfiddle jsfiddle.net/akabalan/ds4Wa的链接
  • 好的,我用你的例子做了一个明确的例子,什么不完全有效?我看到一个黑色条形图...jsfiddle.net/pF858

标签: javascript svg d3.js


【解决方案1】:

function() 如:

setInterval(function() { ... });

称为 lambda 函数(如果您愿意,也可以称为匿名函数)。这意味着该函数没有名称,并且不能在其范围之外调用。在这种情况下,setInterval 函数需要一个函数作为参数,因此我们发送完整的函数定义,而不仅仅是对它的引用。

【讨论】:

    猜你喜欢
    • 2013-12-30
    • 2021-07-31
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多