AAChartModel / AAChartKit

📈📊🚀🚀🚀An elegant modern declarative data visualization chart framework for iOS, iPadOS and macOS. Extremely powerful, supports line, spline, area, areaspline, column, bar, pie, scatter, angular gauges, arearange, areasplinerange, columnrange, bubble, box plot, error bars, funnel, waterfall and polar chart types. 极其精美而又强大的现代化声明式数据可视化图表框架,支持柱状图、条形图、折线图、曲线图、折线填充图、曲线填充图、气泡图、扇形图、环形图、散点图、雷达图、混合图等各种类型的多达几十种的信息图图表,完全满足工作所需.
https://cocoapods.org/pods/AAChartKit
MIT License
4.71k stars 751 forks source link

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

Open Hanyanrui815 opened 1 year ago

AAChartModel commented 1 year ago

步骤 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 commented 1 year ago

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

Hanyanrui815 commented 1 year ago

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

类似echart中的功能:

AAChartModel commented 1 year ago

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

  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 了.