wx-charts
wx-charts copied to clipboard
实现linechart x轴伸缩控制(可拖动状态下)
实现效果如图,可控x轴宽度,在scroll开启的情况下。
由于本人只使用了linechart,所以该功能在其他图表中是否能够正常使用,我并不清楚。
- 修改Charts构造函数
添加flex属性
opts.flex = opts.flex || 1;
- 修改getXAxisPoints函数
var dataCount = opts.enableScroll ? categories.length*((2-opts.flex).toFixed(1)==0 ? 1 : (2-opts.flex).toFixed(1)) : categories.length;
将dataCount计算方式重写,这个就是控制放大比例的 - 修改Charts.prototype.updateData函数
添加
//更新放大比例 this.opts.flex = data.flex || this.opts.flex; //重置移动距离 this.scrollOption.currentOffset = 0;
总体来说 就是在设置x轴的时候修改x轴点的数量,因为canvas的宽度固定不变,点的数量越少,计算出x轴单个点的长度就更长,所以生成x轴的总长度也就越长。然后将这个参数(flex)暴露在构造函数中,然后通过updateData函数更新flex。
讲的比较毛糙,能理解就好,不能理解自己可以对照着源码看一下我的方法,实在不行拿去直接用就行了。
具体用法:
//index.js
//省略了一大堆配置和参数传递
lineChart=new wxCharts({
//值范围[1,2)
flex:1.1//这里是设置初始值
})
//自己写个事件,具体要怎么控制
xFlex:function(){
//处理一下传入的flex值,怎么变化
//需注意flex值的范围,内部封装并不是很好,可能会出bug
调用lineChart.updateData({
flex:flex//传入动态的值
})
}
详情请去https://blog.csdn.net/weixin_41075012/article/details/100056624
可以试一下uCharts,基于wxcharts改造https://gitee.com/uCharts/uCharts
曲线切换的场景,源码中没有做offset的重置,导致scroll开始时候曲线会重新跳转到开头。
修改Charts.prototype.updateData函数,添加
// fix更新数据后滑动,曲线跳转的问题
if(this.opts.enableScroll == true) {
this.opts._scrollDistance_ = this.scrollOption.currentOffset;
}