PCChartsTableViewController.m
4.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
//
// PCChartsTableViewController.m
// PNChartDemo
//
// Created by kevinzhow on 13-12-1.
// Copyright (c) 2013年 kevinzhow. All rights reserved.
//
#import "PCChartsTableViewController.h"
#define ARC4RANDOM_MAX 0x100000000
@implementation PCChartsTableViewController
// In a story board-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
UIViewController * viewController = [segue destinationViewController];
if ([segue.identifier isEqualToString:@"lineChart"]) {
//Add line chart
viewController.title = @"Line Chart";
} else if ([segue.identifier isEqualToString:@"barChart"])
{
//Add bar chart
viewController.title = @"Bar Chart";
} else if ([segue.identifier isEqualToString:@"circleChart"])
{
//Add circle chart
viewController.title = @"Circle Chart";
} else if ([segue.identifier isEqualToString:@"pieChart"])
{
//Add pie chart
viewController.title = @"Pie Chart";
} else if ([segue.identifier isEqualToString:@"scatterChart"])
{
//Add scatter chart
UILabel * scatterChartLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 90, SCREEN_WIDTH, 30)];
scatterChartLabel.text = @"Scatter Chart";
scatterChartLabel.textColor = PNFreshGreen;
scatterChartLabel.font = [UIFont fontWithName:@"Avenir-Medium" size:23.0];
scatterChartLabel.textAlignment = NSTextAlignmentCenter;
PNScatterChart *scatterChart = [[PNScatterChart alloc] initWithFrame:CGRectMake(0, 0, 280, 200)];
[scatterChart setAxisXWithMinimumValue:20 andMaxValue:100 toTicks:6];
[scatterChart setAxisYWithMinimumValue:30 andMaxValue:50 toTicks:5];
NSArray * data01Array = [self randomSetOfObjectsForScatterChart:scatterChart];
PNScatterChartData *data01 = [PNScatterChartData new];
data01.strokeColor = PNGreen;
data01.fillColor = PNFreshGreen;
data01.size = 2;
data01.itemCount = [[data01Array objectAtIndex:0] count];
data01.inflexionPointStyle = PNScatterChartPointStyleCircle;
__block NSMutableArray *XAr1 = [NSMutableArray arrayWithArray:[data01Array objectAtIndex:0]];
__block NSMutableArray *YAr1 = [NSMutableArray arrayWithArray:[data01Array objectAtIndex:1]];
data01.getData = ^(NSUInteger index) {
CGFloat xValue = [[XAr1 objectAtIndex:index] floatValue];
CGFloat yValue = [[YAr1 objectAtIndex:index] floatValue];
return [PNScatterChartDataItem dataItemWithX:xValue AndWithY:yValue];
};
NSArray * data02Array = [self randomSetOfObjectsForScatterChart:scatterChart];
PNScatterChartData *data02 = [PNScatterChartData new];
data02.strokeColor = PNBlue;
data02.fillColor = PNBlue;
data02.size = 2;
data02.itemCount = [[data02Array objectAtIndex:0] count];
data02.inflexionPointStyle = PNScatterChartPointStyleCircle;
__block NSMutableArray *XAr2 = [NSMutableArray arrayWithArray:[data02Array objectAtIndex:0]];
__block NSMutableArray *YAr2 = [NSMutableArray arrayWithArray:[data02Array objectAtIndex:1]];
data02.getData = ^(NSUInteger index) {
CGFloat xValue = [[XAr2 objectAtIndex:index] floatValue];
CGFloat yValue = [[YAr2 objectAtIndex:index] floatValue];
return [PNScatterChartDataItem dataItemWithX:xValue AndWithY:yValue];
};
[scatterChart setup];
scatterChart.chartData = @[data01 , data02];
// this is for drawing line to compare
CGPoint start = CGPointMake(20, 35);
CGPoint end = CGPointMake(80, 45);
[scatterChart drawLineFromPoint:start ToPoint:end WithLineWith:2 AndWithColor:PNBlack];
scatterChart.delegate = self;
[viewController.view addSubview:scatterChartLabel];
[viewController.view addSubview:scatterChart];
viewController.title = @"Scatter Chart";
}
}
/* this function is used only for creating random points */
- (NSArray *) randomSetOfObjectsForScatterChart:(PNScatterChart *)chart{
NSMutableArray *array = [NSMutableArray array];
NSString *LabelFormat = @"%1.f";
NSMutableArray *XAr = [NSMutableArray array];
NSMutableArray *YAr = [NSMutableArray array];
for (int i = 0; i < 25 ; i++) {
[XAr addObject:[NSString stringWithFormat:LabelFormat,(((double)arc4random() / ARC4RANDOM_MAX) * (chart.AxisX_maxValue - chart.AxisX_minValue) + chart.AxisX_minValue)]];
[YAr addObject:[NSString stringWithFormat:LabelFormat,(((double)arc4random() / ARC4RANDOM_MAX) * (chart.AxisY_maxValue - chart.AxisY_minValue) + chart.AxisY_minValue)]];
}
[array addObject:XAr];
[array addObject:YAr];
return (NSArray*) array;
}
@end