d3.js&nvd3.js——如何设置y轴范围
d3.js & nvd3.js -- How to set y-axis range
我正在尝试将图表的y轴范围设置为1-100。
查阅了API文件,找到了一个具有axis.tickV值的可能解决方案,如下所示https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-tickValues
但是,使用该选项不起作用。在上面axis.tickSize下链接的文档页面上进一步阅读,发现了以下行
结束刻度由相关联的刻度的域范围来确定,并且是生成的路径域的一部分,而不是刻度线
所以我认为设置范围的最小值和最大值不能通过"轴"选项完成。
关于在哪里可以指定范围,有什么想法吗?
找到了一个解决方案。
将.forceY([0,100])
附加到图表的实例化会强制轴采用数组中指定的范围。
从这里的例子来看http://nvd3.org/livecode/#codemirrorNav
将.forceY([0,100])
附加到图表变量中是有效的。
顾名思义,这会将数组中的值添加到y
域,而不会将y域设置为[0,100]
。因此,如果将其设置为[0,100]
,并且数据的域为-10
到110
,则域将为[-10,110]
。
现在,如果你希望域是[0,100]
,即使你的数据更大,你也可以使用chart.yDomain([0,100])
。。。但通常你希望你的域包含或你的数据,所以我强烈建议使用chart.forceY而不是chart.yDomain
。正如您将看到的,forceY最常见的用途之一是forceY([0])
,使0始终在域中。
希望这能帮助你理解这个函数实际上在做什么,而arbox7,这应该解释为什么它不能使范围小于数据集的范围。
对于堆叠面积图,.forceY([0,100])
不起作用。改为使用.yDomain([0,100])
如果你的意思是为堆叠区域图设置y-domain
(应该显示的数字范围),这对我来说很有用:
nv.models.stackedAreaChart()
.x(function(d) {...})
.y(function(d) {...})
.yDomain([0, maxY])
...
我遇到了类似的问题,并通过在yAxis的yScale中显式定义域(即)来解决它
var yscale = d3.scale.linear()
.domain([0,100])
.range([250, 0]);
var yAxis = d3.svg.axis()
.scale(yscale);
我试过像:
chart.forceY([DataMin, DataMax]);
Datamin和Datamax需要根据数组进行计算。此外,为了在过滤器应用时动态调整轴点,需要自定义处理过滤器的点击事件,如:
$('g.nv-series').click(function() {
//Calculate DataMin, DataMax from the data array
chart.forceY([DataMin, DataMax]);
});
因此,每次应用过滤器时,图形都会进行调整。
- Bookshelf.js设置的属性不在数据库中
- 通过js设置页面历史记录和页面内容
- Highcharts.js设置用于更改列颜色的阈值
- D3.js:设置贝塞尔曲线的动画
- 节点.js设置套接字 ID
- 使用 node.js 设置 Microsoft Access 数据库连接
- HTML + JS:设置文本区域内容样式的最佳方式
- 使用angular-moment.js设置日期格式
- JS:设置src更改的动画持续时间
- 如何使用node.js和express.js设置SSL
- Foundation 6.2 Slider使用js设置值
- 是否可以在CSS中为JS设置数据,以了解某些媒体查询正在应用
- 无法使用Node js设置cookie
- 当源代码由js设置时加载检查图像
- Three.js设置对象不透明度/透明度
- 通过 JS 设置为在浏览器关闭时过期的 Cookie 未过期
- 如何为 angular js 设置动态网址
- 三.js设置旋转矩阵超过90度时的奇怪行为
- 节点.js设置超时与回调
- D3.js设置突出显示的表格的样式