我只能说一下概念,能力有限,不好意思。
在对应的标签中用hover样式,里面调用函数显示内容,内容里面传入对应内容节点数组的x,y参数,然后对应的调用另一个显示内容的函数,用来显示内容。
使用跟後面範例一樣的代碼就可以了
d3.csv("data.csv", function(data) {
console.log(data);
});
data是自己帶入的資料,跟使用什麼圖表其實沒有關係喔
.append("text")
.text("Time(s)")
.attr("dx",function(){return scale_x(data.length-2)})
用函数,返回数组长度的缩放(如果进行了缩放,没有就返回长度),减去适量单位的长度来给文字
调整位置可以用三种方式,你尝试一下:
- .attr("x", "1em")指定x 轴方向的位置
- .attr("dx", "1em")指定x 轴方向的偏移
- .attr("text-anchor","end"),end 也可以替换为 start
great!
你通过dev tool 看一下,应该是添加了两个g元素
其实还是沿着y轴平移的,看起来沿着x轴平移,是因为我上面把文字逆时针旋转了90度(rotete(-90))
有关于属性值的说明文档吗?
https://github.com/mbostock/d3/wiki/Selections#attr
attr是这样定义的:selection.attr(name[, value]),比如给svg这个selection设置attr,svg.attr("width", 500)
那最后就会在html中生成这样的形式 <svg width="500">. attr只是提供了一种方法,让你给某种name赋予一个指,具体attr有什么,那要看你的attr所对应的元素/selection支持什么样的attr,比如这里的svg,你就要看和svg相关的attr都有哪些。
我说清楚了么?如果不清楚的话,咱们再继续讨论
transform的api:
https://github.com/mbostock/d3/wiki/Math#d3_transform
var svg=d3.select("#container").append("svg")
append什么元素都可以的,因为我这里后面要操作的元素都是svg元素,所以要用svg作为一个root 元素,就像html中的html元素一样。
text-anchor是svg中的元素:
http://tutorials.jenkov.com/svg/text-element.html#text-anchor
cardinal在这里:
https://github.com/mbostock/d3/wiki/SVG-Shapes#line_interpolate
你的代码在哪里?和我的是一样的么?