javascript - 个性化轴范围
问题描述
我的值在这些范围内(40 万到 6 亿)
我想在 D3 图上创建一个全面的 y 轴。如果我使用对数刻度,大数的所有变化都会被删除,如果我使用线性刻度,小数的所有变化也会被删除。
因此我想到了做两轴(一个在另一个轴上,如下图所示),但我不知道是否有更简单的方法。我可以指定所有刻度值以获得所有变化都可见的轴吗?
谢谢你。
解决方案
使用在域和范围中具有两个以上值的常规线性刻度,从而创建分段刻度。
例如:
const scale = d3.scaleLinear()
.domain([0, 5e7, 1e8, 6e8])
.range([h-10, h/2 + 10, h/2 - 10, 10]);
这是运行代码:
const svg = d3.select("svg");
const h = 600;
const scale = d3.scaleLinear()
.domain([0, 5e7, 1e8, 6e8])
.range([h - 10, h / 2 + 10, h / 2 - 10, 10]);
const axis = d3.axisLeft(scale).tickValues(scale.ticks().concat(d3.range(0, 5e7, 5e6)))(svg.append("g").attr("transform", "translate(100,0)"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg width="200", height="600"></svg>
不要忘记确保用户理解 y 轴被截断,最好有清晰的注释显示。
推荐阅读
- java - 如何从 ChipGroup 获得精选的芯片?
- python-3.x - 将由句点分隔的日期转换为日期时间
- c - 对平方数字求和时是否需要明确处理负数或零?
- r - 将复制的数据移动到 R 中的下一列
- termux - Termux 在命令上返回错误:from pymongo import MongoClient
- python - 无法将列表转换为整数并遍历列表
- machine-learning - LightGBM 对缺失标签的支持是什么
- javascript - 为什么我选中的单选框值与传递的值不同?
- visual-studio-code - 为单个日志文件创建 C++ 问题匹配器?
- c# - 库的子文件夹中的 CSOM 更新文件文档元数据。找不到错误文件