专为喜爱简洁的 iOS 开发者设计的交互式折线图。
您只需要一些折线图,但 Core Plot 让您感到困惑。
不再搜索!ios-linechart 正在此!
基本用法可在仓库中包含的演示应用中看到。
首先,导入主头文件
#import "LCLineChartView.h"
或者,您可以导入缩写头文件,它提供不带 LC
前缀的名称
#import "LineChart.h"
每个图表行包含在 LCLineChartData
对象中,该对象指定了 x 轴数据范围(xMin
/ xMax
),颜色
,标题
(在图例中显示)和 itemCount
,数据点的数量
LCLineChartData *d = [LCLineChartData new];
d.xMin = 1;
d.xMax = 31;
d.title = @"The title for the legend";
d.color = [UIColor redColor];
d.itemCount = 10;
此外,每个 LCLineChartData
对象还有一个 getData
属性。这只是一个块,它以数据点的数字作为参数,并返回 LCLineChartDataItem
对象,该对象包围着单个数据点
NSMutableArray *vals = [NSMutableArray new];
for(NSUInteger i = 0; i < d.itemCount; ++i) {
[vals addObject:@((rand() / (float)RAND_MAX) * (31 - 1) + 1)];
}
[vals sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2];
}];
d.getData = ^(NSUInteger item) {
float x = [vals[item] floatValue];
float y = powf(2, x / 7);
NSString *label1 = [NSString stringWithFormat:@"%d", item];
NSString *label2 = [NSString stringWithFormat:@"%f", y];
return [LCLineChartDataItem dataItemWithX:x y:y xLabel:label1 dataLabel:label2];
};
显然,LCLineChartDataItem
的 x
和 y
属性是数据点的 x 和 y 值。当数据点选中时,xLabel
是 x 轴上显示的文本,dataLabel
通常只是 y 值的文本表示,当用户触摸时在数据点旁边显示在气泡中。
请注意,为了获得连贯的图表,项目件的 x 值应该是排序的。这在大多数现实世界中数据的情况下通常是正确的。
最后,所有内容都打包到 LCLineChartView
中
LCLineChartView *chartView = [[LCLineChartView alloc] initWithFrame:CGRectMake(20, 700, 500, 300)];
chartView.yMin = 0;
chartView.yMax = powf(2, 31 / 7) + 0.5;
chartView.ySteps = @[@"0.0",
[NSString stringWithFormat:@"%.02f", chartView.yMax / 2],
[NSString stringWithFormat:@"%.02f", chartView.yMax]];
chartView.data = @[d];
[self.view addSubview:chartView];
yMin
和 yMax
属性应该是显而易见的。在 y 轴上放置标签的 ySteps
是一个数组。data
是使用到的所有 LineChartData
对象的数组。drawsDataPointOrnaments
是一个开关,用于确定是否在实际数据点周围绘制圆形。
示例项目无法编译
目前示例项目需要CocoaPods支持。请先安装CocoaPods,然后在ios-linechart目录中运行pod install
命令。
欢迎提交错误报告和拉取请求!请通过电子邮件联系我,或在GitHub上打开一个问题。