antvis/G2

The issue has been closed
多view的同步缩放平移问题 #4351
yobett posted onGitHub
一个chart中包含多个view,这些view的x轴是相同的,如何让这些view同步进行平移/缩放呢? 我基于示例 https://g2.antv.vision/zh/examples/candlestick/candlestick#k-and-column 做了点修改(代码 https://gist.github.com/yobett/da2f2298dc102ced8ca4926e7924a512 ):
import DataSet from '@antv/data-set';
import { Chart, registerInteraction } from '@antv/g2';
registerInteraction("drag-move", {
start: [{ trigger: "plot:mousedown", action: "scale-translate:start" }],
processing: [
{
trigger: "plot:mousemove",
action: "scale-translate:translate",
throttle: { wait: 50, leading: true, trailing: false },
},
],
end: [{ trigger: "plot:mouseup", action: "scale-translate:end" }],
});
fetch('https://gw.alipayobjects.com/os/antvdemo/assets/data/candle-sticks.json')
.then(res => res.json())
.then(data => {
// ...
chart.scale({
time: {
type: 'time',
key: true,
sync: true,
// ...
},
// ...
});
// ...
const kView = chart.createView({
region: {
start: { x: 0, y: 0 },
end: { x: 1, y: 0.7 },
},
limitInPlot: true
});
// ...
const barView = chart.createView({
region: {
start: { x: 0, y: 0.7 },
end: { x: 1, y: 1 },
},
limitInPlot: true
});
// ...
kView.interaction("view-zoom");
kView.interaction("drag-move");
barView.interaction("view-zoom");
barView.interaction("drag-move");
chart.render();
});
做的修改如下:
- 注册drag-move交互
- time scale,type timeCat改成time,增加key和sync
- kView和barView设置增加limitInPlot: true
- kView和barView增加交互view-zoom/view-zoom
问题如下:
- 无法在chart上增加交互view-zoom/view-zoom
- 如果不设置time scale的sync,kView和barView可以分别缩放和平移,但无法同步
- 如果设置了time scale的sync,kView和barView缩放和平移无法同步,并且x轴只能缩小无法放大
有什么简便方法能让多个view在1个轴(或2个轴)方向同步缩放和平移呢?