javascript - D3.js 缩放:热图的离散比例不更新
问题描述
我对 D3 很陌生,希望你能帮助我。我有一个基本的热图,可以用 xAxis 上的条件/处理和 yAxis 上的基因来可视化基因表达数据,因此有 2 个离散尺度(scaleBands)。现在我想添加一个d3.zoom()
函数,如下所示:
const extent = [[margin.left, margin.top], [width - margin.right, height - margin.top]];
svg.call(d3.zoom()
.scaleExtent([1, 8])
.translateExtent(extent)
.extent(extent)
.on("zoom", updateChart));
function updateChart() {
////PROBLEM ZOOM WITH SCALEBAND
// new x Scale
x.range([margin.left, width - margin.right].map(d => d3.event.transform.applyX(d)));
svg.selectAll("#cell").attr("x", d => x(d.condition)).attr("width", x.bandwidth());
svg.selectAll("xAxisG").call(d3.axisBottom(x));
// new y Scale
y.range([height - margin.bottom, margin.top].map(d => d3.event.transform.applyY(d)))
svg.selectAll("#cell").attr("y", d => y(d.gene)).attr("height", y.bandwidth());
svg.selectAll("yAxisG").call(d3.axisLeft(y));
}
(代码见https://github.com/NicolaiNi/Omiqa.bioProjects)所以放大一般工作,但 x 和 y 轴的更新没有。如何根据缩放级别更新轴?
见下图: 缩放后x和y轴消失且不更新
解决方案
推荐阅读
- google-cloud-platform - 转移存储桶的所有权和计费
- javascript - DevTools 无法解析 SourceMap:chrome-extension
- c# - .Net Core 3 中是否有 StringEnumConverter 的替代品?
- java - HHH10001002:使用 Hibernate 内置连接池(不用于生产!)
- rest - 是否有将多个 API 调用组合成一个 HTTP 请求的标准方法?
- mongodb - 有没有办法在 MongoDB 聚合期间将字符串(格式:“1,5,20,22”)转换为整数数组( [1,5, 20, 22] )?
- asp.net-core - asp.net core中登录过期时如何捕获进程
- sql - sql - 某些特定记录出现的增量
- javascript - 包含一组有限的特殊字符的正则表达式模式
- excel - 使用右功能删除重复项