Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何禁用d3对数刻度中的小刻度?_Javascript_D3.js_Label_Axes - Fatal编程技术网

Javascript 如何禁用d3对数刻度中的小刻度?

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)

我的实时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);

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
。但我仍在等待其他更方便的答案