javascript - D3js 折线图 Y 轴上的不同刻度大小

标签 javascript d3.js charts nvd3.js

到目前为止,我还没有找到任何这样的例子,但我希望 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);

因此,您会得到:

enter image description here

查看您的代码笔,您可能想尝试:

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 个。

enter image description here

关于javascript - D3js 折线图 Y 轴上的不同刻度大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27002554/

相关文章:

Javascript - 在函数中传递 THIS 不起作用

javascript - 如何在 Chart.js 上自定义边框样式

javascript - JS/HTML5/Meteor 如何将输入更改为标签?

javascript - 网站淡入之前的加载器

javascript - 如何将plotly.js应用到现有的svg组<g>作为目标而不是应用到目标<div>元素?

d3.js - D3 转换不起作用

javascript - 循环遍历所有子元素

javascript - ScrollView 以编程方式滚动按钮按下 react native

javascript - Amcharts 4 TreeMap 项目符号链接(symbolic link)

reactjs - react 车速表或仪表。如何在 react 中创建标记的速度计?