d3.js如何区分 X 轴和 Y 轴
How does d3.js tell the difference between X-axis and Y-Axis?
所以我最近在学习 d3,遇到了一个小问题:当人们创建 x 轴和 y 轴时,如何从代码中分辨出首先创建的轴?
例如:
.......
.......
//Create scale functions
var xScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d) { return d[0]; })])
.range([padding, w - padding * 2]);
var yScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d) { return d[1]; })])
.range([h - padding, padding]);
.......
.......
//Define X axis
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom")
.ticks(5);
//Define Y axis
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.ticks(5);
.......
.......
//Create X axis
svg.append("g")
.attr("class", "axis")
.attr("transform", "translate(0," + (h - padding) + ")")
.call(xAxis);
//Create Y axis
svg.append("g")
.attr("class", "axis")
.attr("transform", "translate(" + padding + ",0)")
.call(yAxis);
对于这段代码,我真的找不到创建 x 轴或 y 轴之间的区别? 是因为变换函数吗? 但是,当我删除 x 和 y 的变换函数时,x 回到顶部,而 y 消失,到底发生了什么?有默认功能吗?
代码来源:Scott Murray 的 http://alignedleft.com/content/03-tutorials/01-d3/160-axes/6.html。
首先创建的轴是第一个调用的轴(使用 .call()),在本例中为 x 轴。轴的位置取决于方向和应用的变换。方向可以是"底部"、"顶部"、"左"或"右"。底部和顶部指定一个水平轴,刻度分别位于轴的上方或下方,而左和右指定垂直轴,刻度分别位于轴的左侧或右侧。D3 不知道哪个是 X 轴,哪个是 Y 轴。它只是知道有轴,并将它们绘制在 .orient 和转换告诉它的位置。当然,人们倾向于将水平轴称为"xAxis"或类似的东西,但您可以称它为"yAxis",它仍然会被绘制为水平轴。变换将定位轴。因此,如果您删除 x 轴的变换,它将不再从顶部向下变换"h - 填充"像素,而是出现在其容器的顶部。如果删除 y 轴的变换,它将绘制在容器的 (0,0),即左上角,并将向上延伸,但您将看不到它,因为它将延伸到容器的可见区域之外。
有关更多详细信息,请参阅此处:https://github.com/mbostock/d3/wiki/SVG-Axes
相关文章:
- 如何使用PHP和JS级联三个下拉列表
- Jpgraph:如何手动设置X轴和Y轴的范围
- 谷歌地图Api和JS代码不工作
- 浏览器坚持使用旧的html和JS缓存
- PHP和JS脚本的奇怪问题,在我刷新页面之前第一次失败
- Dart和第三方CSS和JS框架
- Bootstrap CSS和JS我必须将它们包含在单独的文件中,或者可以编译它们
- PHP和JS中表单验证的最佳方式
- 使用SVG和JS进行转换
- NVD3.js多图形,具有固定的x轴和y轴
- 制作一个chrome扩展,替换css和js元素
- 单独的文件(HTML5、CSS和JS)
- 使用HTML和JS的iPhone游戏中的性能问题,以及appMobi
- 如何在放大和缩小时间轴时在时间轴Vis.js上设置新选项
- d3.js如何区分 X 轴和 Y 轴
- 图表JS自定义工具提示,X轴和Y轴的%和标签
- 如何在js中使用一个对象创建多个矩形?如何在不同的x轴和y轴上做出它们
- 使用数组计算坐标之间的距离,并设置Y轴和比例- D3.js
- Three.js -当相机以90度角旋转时,为什么在x轴和z轴上旋转会产生相同的效果?
- 我如何通过x轴和y轴移动一个点,而曲线在chart.js线形图中没有改变