antvis / F2

📱📈An elegant, interactive and flexible charting library for mobile.
https://f2.antv.vision/zh
MIT License
7.89k stars 649 forks source link

平移事件溢出画布也通过可以平移,柱形图和折线图平移,首次进来平移,滑动其它地方会导致平移事件触发? #939

Open yongheng798 opened 4 years ago

yongheng798 commented 4 years ago

The issue which is not created via https://antv-issue-helper.surge.sh will be closed immediately.

官方的平移事件,平移滑动溢出画布之后,还可以平移,官方没有做对应的平移溢出事件处理。

由于公司想压缩代码采用antv f2,平移事件溢出画布后还能平移


注意:不是用 https://antv-issue-helper.surge.sh 创建的 issue 会被立即关闭。

yongheng798 commented 4 years ago

使用Antv F2图表踩坑记

1、随机数并不完全可靠,依然会有随机相等的情况,所以如果想担心ID会重复,请使用时间戳+随机数组合模式;

2、监听数据变化函数,同时也要做一次数据的清除和刷新,避免数据缓存引起图表混乱;

3、自定义图例,要重新组装数据,如果是矩形,需要重新绘制,同时混合图,最好数据都重新组装成适合F2渲染的数据结构;

4、自定义刻度,要先重新组装一套数据,【最大,最小,平均刻度值】,注意数值一定一定一定要是数值,不能用字符串,并把重新组装的数据载入到resource里面

5、载入数据,最好都先遍历重新组装,过滤不符合要求的数据

6、new 实例对象的时候,需要重新定义宽高,padding的值;

7、更新图表,IOS下会有渲染不及时,在VUE使用最好用nextTick重新更新一遍图表;

8、自定义tooltip,可以把这个方法重新封装出来,同时注意要注意好边界【上右下左】的判断;

9、自定义标签,要重新编写符合的

10、使用平移交互事件,一定一定要将 onStart onProcess onEnd 三个方法重新repaint()渲染;

yongheng798 commented 4 years ago

平移渲染不正常,请在回调方法里面重新渲染,虽然重新渲染了,但是会消耗了更多的内存,希望官方解决一下 chart.interaction('pan', { onStart(ev) { _this.chart.repaint() }, onProcess(ev) { _this.chart.repaint() }, onEnd(ev) { _this.chart.repaint() } })

yongheng798 commented 4 years ago

vue中,渲染不正常,由于有缓存机制,所以建议在渲染的时候,加上nextTick,如this.$nextTick(() => { chart.repaint() })

yongheng798 commented 4 years ago

用平移,要自己将数据排序好,禁用官方的排序,sortable: false,比如柱形图的 chart.interval({sortable: false}).position('date*steps').style({ radius: [ 2, 2, 0, 0 ] });

yongheng798 commented 4 years ago

用平移,要先将部分数据处理好,在加载资源的时候处理好,比如: chartDataName为X轴已经处理好的日期类型数据

chart.source(chartData, { name: { tickCount: (chartData.length > 5) ? 5 : chartData.length, values: (chartDataName.length > 5) ? chartDataName.slice(-5) : chartDataName, ticks: chartData, type: 'timeCat' }, score: { tickInterval: 50, alias: '个人分数' }, avgScore: { ticks: [0, 17, 33, 50, 67, 83, 100], alias: '平均分数' } })