wx-charts icon indicating copy to clipboard operation
wx-charts copied to clipboard

实现linechart x轴伸缩控制(可拖动状态下)

Open JinGem opened this issue 5 years ago • 2 comments

20190824_160929 实现效果如图,可控x轴宽度,在scroll开启的情况下。 由于本人只使用了linechart,所以该功能在其他图表中是否能够正常使用,我并不清楚。

  1. 修改Charts构造函数 添加flex属性opts.flex = opts.flex || 1;
  2. 修改getXAxisPoints函数 var dataCount = opts.enableScroll ? categories.length*((2-opts.flex).toFixed(1)==0 ? 1 : (2-opts.flex).toFixed(1)) : categories.length; 将dataCount计算方式重写,这个就是控制放大比例的
  3. 修改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

JinGem avatar Aug 24 '19 11:08 JinGem

可以试一下uCharts,基于wxcharts改造https://gitee.com/uCharts/uCharts

16cheng avatar Aug 29 '19 11:08 16cheng

曲线切换的场景,源码中没有做offset的重置,导致scroll开始时候曲线会重新跳转到开头。

修改Charts.prototype.updateData函数,添加

  // fix更新数据后滑动,曲线跳转的问题
  if(this.opts.enableScroll == true) {
    this.opts._scrollDistance_ = this.scrollOption.currentOffset;
  }

kicer avatar Oct 19 '19 13:10 kicer