Javascript 如何禁用d3对数刻度中的小刻度?
我的实时d3对数比例图如下所示: 我只想显示带有标签的主要刻度:10^-2、10^-1、10^0、10^1、10^2 但是不是小刻度 我希望对数Y轴看起来像这样,没有小刻度: 我该怎么做 编辑:发布一些代码Javascript 如何禁用d3对数刻度中的小刻度?,javascript,d3.js,label,axes,Javascript,D3.js,Label,Axes,我的实时d3对数比例图如下所示: 我只想显示带有标签的主要刻度:10^-2、10^-1、10^0、10^1、10^2 但是不是小刻度 我希望对数Y轴看起来像这样,没有小刻度: 我该怎么做 编辑:发布一些代码 svg = d3.select("#chart1").append("svg") .attr("width", width + margin.left + margin.right) .attr("height", height + margin.top + margin.bottom)
svg = d3.select("#chart1").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom);
y = d3.scale.log().domain([1e-1, 1e2]).range([height, 0]);
yAxis = d3.svg.axis().scale(y).orient("left");
svg.selectAll("g.y.axis")
.call(yAxis)
.selectAll(".tick text")
.text(null)
.filter(powerOfTen)
.text(10)
.append("tspan")
.attr("dy", "-.7em")
.text(function(d) { return Math.round(Math.log(d) / Math.LN10); });
您可能还想知道如何获得PowerFarmy的自定义标签。如果是这样,您可能需要参考
编辑:您可以编辑Lars Kotthoff建议的我的
var yAxis = d3.svg.axis().scale(y).tickSize(0).tickValues([1e-1,1e0,1e1,1e2]).orient("left");
此答案强制使用
标签
,但未绘制主刻度
。使用.tickValues()
明确指定刻度。此解决方案无法很好地扩展。如果数据在1e4左右,则记号将丢失。您始终可以根据推送数据的最大值更新每个循环中的tickValue
。但我仍在等待其他更方便的答案