
[英]D3.js multiple y-Axis with same position of ticks?
我有3个y轴和一个x轴的图表,必须放大所有3轴。 ! DEMO 是否可以设置所有3 y轴,中心为0? 如果我缩放图表滴答必须保持在同一个地方? 或者,也许,说“在0值之间始终只显示10个滴答”。 例如: 范围1 - > [10..0 ..- 10] ...
[英]Find location of y-axis ticks using d3.js
提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文。
我正在使用 d3.js(在 PowerBI 中 - 因此是 d3 的第 3 版)构建一个 SVG 可视化,并且我正在努力将我的数据点和固定线与适当的 y 轴刻度标记对齐。
但是当只有 1 或 2 点时,它就差了
我正在尝试动态计算偏移量,因为 y 轴刻度数将取决于我拥有的 PowerBI 过滤器。
我目前的计算是,我将 svg 的高度除以滴答数,然后将其除以二,使其落在中心。 y 轴是有序的。
相关代码是:
var margin = {top: 20, right: 250, bottom: 50, left: 50},
width = pbi.width - margin.left - margin.right,
height = pbi.height - margin.top - margin.bottom,
legendleft = pbi.width - margin.right;
var y = d3.scale.ordinal()
.rangeRoundBands([0, height], barPad, barOuterPad);
var svg = d3.select("#chart")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom + legendleft)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
y.domain(Data.map(function(d) { return d.reportingyear; }));
var YearSize = new Set(yearArray).size // Gets the number of ticks on the y-axis
svg.append("g")
.attr("class", "y axis")
.attr("transform", "translate(0, 6)")
.call(d3.svg.axis().scale(y).orient("left"));
// Chart the rows
var publishedRow = svg.append("g").attr("id", "publishedgroup").selectAll(null)
.data(rowArray)
.enter();
publishedRow.append("line")
.style("stroke", "grey")
.style("stroke-width", 1)
.style("stroke-dasharray", ("2, 2"))
.attr("x1", function(d) { return 0; })
.attr("y1", function(d) { return y(d.entry)+((pbi.height-margin.top-margin.bottom) / (new Set(yearArray).size) / 2); })
.attr("x2", function(d) { return width; })
.attr("y2", function(d) { return y(d.entry)+((pbi.height-margin.top-margin.bottom) / (new Set(yearArray).size) / 2); });
publishedRow.append("circle")
.attr("cx", function(d) {return x(new Date(d.date))} )
.attr("cy", function(d) {return y(d.year)+((pbi.height-margin.top-margin.bottom) / (new Set(yearArray).size) / 2); })
.attr("r", 7)
.style("fill", function(d, i) { return milestoneMap[d.milestone]; })
});
.attr
行具有动态计算偏移量的代码。
有没有更简单的方法来做到这一点? 或者我可以得到一些关于为什么我的计算不起作用的建议吗?
谢谢!
我应该使用.rangePoints
而不是.rangeRoundBands
然后 static 偏移量 6 起作用了。
问题解决了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.