AAChartKit icon indicating copy to clipboard operation
AAChartKit copied to clipboard

一个可以左右拖动的折线图, 在显示的区域Y轴的最大者和最小值显示label,拖动时候最大值和最小值根据显示区域的变化而变化。这个怎么实现?

Open Hanyanrui815 opened this issue 2 years ago • 4 comments

Hanyanrui815 avatar Apr 19 '23 06:04 Hanyanrui815

步骤 1: 设置 AAChartModel

aaChartModel.zoomType = AAChartZoomTypeX; //支持 X 轴横向滚动

步骤 2: 设置 AAChartView

       [chartView didFinishLoadHandler:^(AAChartView *aaChartView) {
            NSLog(@"✈️✈️✈️✈️✈️ AAChartView content did finish load!!!");
            [aaChartView aa_updateXAxisExtremesWithMin:0 max:5];
        }];

但是这种方式实现的图表, 在手指拖动图表沿着 X 轴方向滚动的时候, 手感很涩, 一点也不流畅, 不建议使用.

AAChartModel avatar Apr 19 '23 06:04 AAChartModel

以上方法只是勉强能用的水平, 不建议使用. 有此种需求的话, 还是建议使用其他的原生图表库, 比如 Swift 版本的 Charts 之类的.

AAChartModel avatar Apr 19 '23 06:04 AAChartModel

谢谢回答,我可能说的不是很明白,我想实现的功能和Demo中configureMaxAndMinDataLabelsForChart类似,但是Demo是在一开始通过dataSet 设置AADataElement 实现的, 这个写了就不能变了, 我想实现的是在拖动过程中图标可以根据当前显示的区域,能够计算出最大值最小值,然后进行显示.

类似echart中的功能:

  • https://echarts.apache.org/examples/zh/editor.html?c=line-marker

Hanyanrui815 avatar Apr 19 '23 07:04 Hanyanrui815

这个也不支持. 主要问题就在于:

  1. 通过 AAChartView 的这个方法
/// Update the X axis Extremes
/// @param min X axis minimum
/// @param max X axis maximum
- (void)aa_updateXAxisExtremesWithMin:(NSUInteger)min max:(NSUInteger)max;

实现的手指拖动, 手感很涩, 不流畅, 基本不推荐.

  1. 通过配置 AAChartModel 或者 AAOptionsscrollablePlotArea属性实现的手指拖动, 虽然流畅, 但是此方法不支持监听手指结束拖动的事件, 进而无法获得当前图表显示范围内的所有 data 元素的值, 当然也就不能绘制对应的范围内的最大值和最小值的自定义 dataLabel 了.

AAChartModel avatar Apr 19 '23 11:04 AAChartModel