javascript - 如何设置垂直刻度的周期?
问题描述
我使用 d3 库版本 5.7.0。我制作简单的图表。纵轴有几个刻度?这些刻度的周期为 5000。
但我需要 10000 期。请帮帮我。
js代码:
xScale = d3.scaleLinear()
.domain([0, 100000])
.range([paddingYaxis, w - padding]);
yScale = d3.scaleLinear()
.domain([0, d3.max(data, d => +d['price'] + yPeriod)])
.range([h - padding, tickSize]);
xAxis = d3.axisBottom(xScale)
.tickSizeInner(0)
.tickSizeOuter(tickSize)
.tickPadding(tickPadding);
yAxis = d3.axisLeft(yScale)
.tickSizeInner(-(w - paddingYaxis - tickSize * 2))
.tickSizeOuter(0)
.tickPadding(tickPadding)
.tickFormat(d3.format(' '));
解决方案
这应该为各种范围(不仅仅是高达 50000)提供通用解决方案。刻度函数允许您选择一定数量的刻度,除以周期大小,给我们想要的结果。
yAxis = d3.axisLeft(yScale)
.tickSizeInner(-(w - paddingYaxis - tickSize * 2))
.tickSizeOuter(0)
.tickPadding(tickPadding)
.tickFormat(d3.format(' '))
.ticks(d3.max(data, d => +d['price'] + yPeriod) / 10000);
推荐阅读
- mysql - MySQL 显示列 start_time、end_time 值相同且计数大于 3 的行的 id
- xml - 如何使用 Groovy 脚本从 JDBC 响应中获取多个值
- python - 如何捕获*写入标准输入*的子进程的所有输出?
- javascript - 浏览器实时音频消除缓冲延迟
- angular - 需要在 withLatestFrom 中使用 jasmine marble 创建单元测试用例
- reactjs - setState 的问题和太多的重新渲染
- flutter - 为什么颤振静态最终变量改变了
- javascript - JavaScript 对用户输入的变量的操作
- vuejs3 - Vuelidate vue.js 最新的 vue3 使用 helpers.forEach 方法来处理对象数组
- kubernetes - kubctl get deployment READY 0/0 含义