为喜欢简单的 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
属性应该是显而易见的。《ySteps》是在 y 轴上放置的标签数组。《data》是所有要使用的 LineChartData
对象的数组。《drawsDataPointOrnaments》是一个开关,用于确定是否在实数据点周围绘制圆圈。
示例项目无法编译
当前样本项目需要使用 CocoaPods。请先安装 Cocoapods,然后在 ios-linechart 目录下运行 pod install
。
项目是否支持柱状图、饼图等?
不。
欢迎提交错误报告和 pull requests!请通过电子邮件或直接在 GitHub 上创建一个 issue 来与我联系。