到目前为止,我还没有找到任何这样的例子,但是我希望Stack的读者以前遇到过这种情况。
我们有一个Y轴,从0到200的范围不是很有趣。我们希望“压缩” y轴的该区域,并随着Y轴值的增大而使间隙变大,从而使光谱的顶端在线图中显示出更多的运动。
这意味着,Y轴上的刻度会随着其范围的增大而增长,并使该图在频谱的顶端附近显示更大的差异。
我可以看到Y没有函数,但是有人做过这样的事情吗?如果有,有人有工作示例吗?
如果D3无法做到这一点,是否有人对highcharts做过类似的事情?
笔记
如果使用这样的比例,请确保图表中的思路仍然清晰。请注意,这些线仅基于起点和终点而构建,并且在轴上沿断点移动时不会“扭曲”。在写答案时,我不知道您有一个折线图,其值小于200。
回答
假设您要使用线性标尺,则可以例如尝试以下操作:
newScale = d3.scale.linear().domain([0,200,1000]).range([0,100,1000])
轴可能看起来像这样:
var xAxis = d3.svg.axis()
.scale(newScale)
.orient('bottom');
d3.select("#someSVG").append("g")
.attr("class", "x axis")
.attr("transform", "translate(0, " + 123 + ')')
.call(xAxis);
因此,您将获得:
查看您的Codepen,您可能要尝试:
var y = d3.scale.linear().range([height,height * 9 / 10, 0]);
然后用作域:
y.domain([0, 200, d3.max(data, function (d) {
return d.close;
})]);
因此,在此示例中,您将高度的1/10分配给前200个高度。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句