我正在制作d3中的交互式条形图,并遇到了一个问题.条形图从表单中读取数据,但它将数据作为字符串读取.当我使用数据绘制这样的栏:
var bars = svg.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr("x", function(d,i) {
return i * (w / dataset.length);
})
.attr("y", function(d) {
return h - (d * 4);
})
.attr("width", w / dataset.length - barPadding)
.attr("height", function(d) {
return d * 4;
})
.attr("fill", function(d) {
return "rgb(" + (d * redLevel) + ", 0, " + (d * blueLevel) + ")";
});
Run Code Online (Sandbox Code Playgroud)
数据作为字符串读取.我可以在parseInt(d)每次使用时使用d,但这样效率非常低.var d = parseInt(d)在方法链之外做很容易,但这不适用于d3.建议?
我正在创建一个小脚本来"帮助"我完成我的作业.它使用jQuery.脚本(到目前为止)如下:
var s = document.createElement('script');
document.body.appendChild(s);
s.src = "http://code.jquery.com/jquery-latest.js"; // Include jQuery
var tmp_1 = document.embeds[0].GetVariable("q1answers"); // Read raw values
var answers_1 = tmp_1.split(","); // Explode into array
answers_1.splice(0,1); // Remove first element (always 0)
var tmp_2 = document.embeds[0].GetVariable("q2answers");
var answers_2 = tmp_2.split(",");
answers_2.splice(0,1);
answers_1.push("LINE_BREAK");
var answers = answers_1.concat(answers_2);
$("body").append("<div id='answers-wrap'></div>");
$("#answers-wrap").css("position", "fixed");
$("#answers-wrap").css("background", "none");
Run Code Online (Sandbox Code Playgroud)
当它到达倒数第3行时会出现问题.Chrome控制台声称Object #<HTMLBodyElement> has no method 'append',如果我提取该行并将其单独放入控制台,它可以正常工作.我可以使用不同的方法来插入HTML,但我想知道什么不适用于这个.
提前致谢!