MrWooJ

Adding Scatter Graph to PNCHart

* this is compatible with new release.
* because of your huge change, I had to change the position of my codes
from viewController to tableViewController.
* minor changing and improvement.
@@ -56,4 +56,10 @@ @@ -56,4 +56,10 @@
56 - (void) setup; 56 - (void) setup;
57 - (void) drawLineFromPoint : (CGPoint) startPoint ToPoint : (CGPoint) endPoint WithLineWith : (CGFloat) lineWidth AndWithColor : (UIColor*) color; 57 - (void) drawLineFromPoint : (CGPoint) startPoint ToPoint : (CGPoint) endPoint WithLineWith : (CGFloat) lineWidth AndWithColor : (UIColor*) color;
58 58
  59 +/**
  60 + * Update Chart Value
  61 + */
  62 +
  63 +- (void)updateChartData:(NSArray *)data;
  64 +
59 @end 65 @end
This diff is collapsed. Click to expand it.
@@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
16 @property (nonatomic) PNBarChart * barChart; 16 @property (nonatomic) PNBarChart * barChart;
17 @property (nonatomic) PNCircleChart * circleChart; 17 @property (nonatomic) PNCircleChart * circleChart;
18 @property (nonatomic) PNPieChart *pieChart; 18 @property (nonatomic) PNPieChart *pieChart;
  19 +@property (nonatomic) PNScatterChart *scatterChart;
19 20
20 @property (weak, nonatomic) IBOutlet UILabel *titleLabel; 21 @property (weak, nonatomic) IBOutlet UILabel *titleLabel;
21 22
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 // 7 //
8 8
9 #import "PCChartViewController.h" 9 #import "PCChartViewController.h"
  10 +#define ARC4RANDOM_MAX 0x100000000
10 11
11 @implementation PCChartViewController 12 @implementation PCChartViewController
12 13
@@ -120,6 +121,41 @@ @@ -120,6 +121,41 @@
120 [self.view addSubview:self.pieChart]; 121 [self.view addSubview:self.pieChart];
121 self.changeValueButton.hidden = YES; 122 self.changeValueButton.hidden = YES;
122 } 123 }
  124 + else if ([self.title isEqualToString:@"Scatter Chart"])
  125 + {
  126 + self.titleLabel.text = @"Scatter Chart";
  127 +
  128 + self.scatterChart = [[PNScatterChart alloc] initWithFrame:CGRectMake(SCREEN_WIDTH /6.0 - 30, 135, 280, 200)];
  129 + [self.scatterChart setAxisXWithMinimumValue:20 andMaxValue:100 toTicks:6];
  130 + [self.scatterChart setAxisYWithMinimumValue:30 andMaxValue:50 toTicks:5];
  131 +
  132 + NSArray * data01Array = [self randomSetOfObjects];
  133 + PNScatterChartData *data01 = [PNScatterChartData new];
  134 + data01.strokeColor = PNGreen;
  135 + data01.fillColor = PNFreshGreen;
  136 + data01.size = 2;
  137 + data01.itemCount = [[data01Array objectAtIndex:0] count];
  138 + data01.inflexionPointStyle = PNScatterChartPointStyleCircle;
  139 + __block NSMutableArray *XAr1 = [NSMutableArray arrayWithArray:[data01Array objectAtIndex:0]];
  140 + __block NSMutableArray *YAr1 = [NSMutableArray arrayWithArray:[data01Array objectAtIndex:1]];
  141 + data01.getData = ^(NSUInteger index) {
  142 + CGFloat xValue = [[XAr1 objectAtIndex:index] floatValue];
  143 + CGFloat yValue = [[YAr1 objectAtIndex:index] floatValue];
  144 + return [PNScatterChartDataItem dataItemWithX:xValue AndWithY:yValue];
  145 + };
  146 +
  147 + [self.scatterChart setup];
  148 + self.scatterChart.chartData = @[data01];
  149 +/***
  150 + this is for drawing line to compare
  151 + CGPoint start = CGPointMake(20, 35);
  152 + CGPoint end = CGPointMake(80, 45);
  153 + [self.scatterChart drawLineFromPoint:start ToPoint:end WithLineWith:2 AndWithColor:PNBlack];
  154 +***/
  155 + self.scatterChart.delegate = self;
  156 + self.changeValueButton.hidden = YES;
  157 + [self.view addSubview:self.scatterChart];
  158 + }
123 } 159 }
124 160
125 161
@@ -171,6 +207,10 @@ @@ -171,6 +207,10 @@
171 { 207 {
172 [self.circleChart updateChartByCurrent:@(arc4random() % 100)]; 208 [self.circleChart updateChartByCurrent:@(arc4random() % 100)];
173 } 209 }
  210 + else if ([self.title isEqualToString:@"Scatter Chart"])
  211 + {
  212 + // will be code soon.
  213 + }
174 214
175 } 215 }
176 216
@@ -195,4 +235,19 @@ @@ -195,4 +235,19 @@
195 [bar.layer addAnimation:animation forKey:@"Float"]; 235 [bar.layer addAnimation:animation forKey:@"Float"];
196 } 236 }
197 237
  238 +/* this function is used only for creating random points */
  239 +- (NSArray *) randomSetOfObjects{
  240 + NSMutableArray *array = [NSMutableArray array];
  241 + NSString *LabelFormat = @"%1.f";
  242 + NSMutableArray *XAr = [NSMutableArray array];
  243 + NSMutableArray *YAr = [NSMutableArray array];
  244 + for (int i = 0; i < 25 ; i++) {
  245 + [XAr addObject:[NSString stringWithFormat:LabelFormat,(((double)arc4random() / ARC4RANDOM_MAX) * (self.scatterChart.AxisX_maxValue - self.scatterChart.AxisX_minValue) + self.scatterChart.AxisX_minValue)]];
  246 + [YAr addObject:[NSString stringWithFormat:LabelFormat,(((double)arc4random() / ARC4RANDOM_MAX) * (self.scatterChart.AxisY_maxValue - self.scatterChart.AxisY_minValue) + self.scatterChart.AxisY_minValue)]];
  247 + }
  248 + [array addObject:XAr];
  249 + [array addObject:YAr];
  250 + return (NSArray*) array;
  251 +}
  252 +
198 @end 253 @end
@@ -7,7 +7,6 @@ @@ -7,7 +7,6 @@
7 // 7 //
8 8
9 #import "PCChartsTableViewController.h" 9 #import "PCChartsTableViewController.h"
10 -#define ARC4RANDOM_MAX 0x100000000  
11 10
12 @implementation PCChartsTableViewController 11 @implementation PCChartsTableViewController
13 12
@@ -44,76 +43,9 @@ @@ -44,76 +43,9 @@
44 } else if ([segue.identifier isEqualToString:@"scatterChart"]) 43 } else if ([segue.identifier isEqualToString:@"scatterChart"])
45 { 44 {
46 //Add scatter chart 45 //Add scatter chart
47 - UILabel * scatterChartLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 90, SCREEN_WIDTH, 30)];  
48 - scatterChartLabel.text = @"Scatter Chart";  
49 - scatterChartLabel.textColor = PNFreshGreen;  
50 - scatterChartLabel.font = [UIFont fontWithName:@"Avenir-Medium" size:23.0];  
51 - scatterChartLabel.textAlignment = NSTextAlignmentCenter;  
52 46
53 - PNScatterChart *scatterChart = [[PNScatterChart alloc] initWithFrame:CGRectMake(0, 0, 280, 200)];  
54 - [scatterChart setAxisXWithMinimumValue:20 andMaxValue:100 toTicks:6];  
55 - [scatterChart setAxisYWithMinimumValue:30 andMaxValue:50 toTicks:5];  
56 -  
57 - NSArray * data01Array = [self randomSetOfObjectsForScatterChart:scatterChart];  
58 - PNScatterChartData *data01 = [PNScatterChartData new];  
59 - data01.strokeColor = PNGreen;  
60 - data01.fillColor = PNFreshGreen;  
61 - data01.size = 2;  
62 - data01.itemCount = [[data01Array objectAtIndex:0] count];  
63 - data01.inflexionPointStyle = PNScatterChartPointStyleCircle;  
64 - __block NSMutableArray *XAr1 = [NSMutableArray arrayWithArray:[data01Array objectAtIndex:0]];  
65 - __block NSMutableArray *YAr1 = [NSMutableArray arrayWithArray:[data01Array objectAtIndex:1]];  
66 - data01.getData = ^(NSUInteger index) {  
67 - CGFloat xValue = [[XAr1 objectAtIndex:index] floatValue];  
68 - CGFloat yValue = [[YAr1 objectAtIndex:index] floatValue];  
69 - return [PNScatterChartDataItem dataItemWithX:xValue AndWithY:yValue];  
70 - };  
71 -  
72 - NSArray * data02Array = [self randomSetOfObjectsForScatterChart:scatterChart];  
73 - PNScatterChartData *data02 = [PNScatterChartData new];  
74 - data02.strokeColor = PNBlue;  
75 - data02.fillColor = PNBlue;  
76 - data02.size = 2;  
77 - data02.itemCount = [[data02Array objectAtIndex:0] count];  
78 - data02.inflexionPointStyle = PNScatterChartPointStyleCircle;  
79 - __block NSMutableArray *XAr2 = [NSMutableArray arrayWithArray:[data02Array objectAtIndex:0]];  
80 - __block NSMutableArray *YAr2 = [NSMutableArray arrayWithArray:[data02Array objectAtIndex:1]];  
81 - data02.getData = ^(NSUInteger index) {  
82 - CGFloat xValue = [[XAr2 objectAtIndex:index] floatValue];  
83 - CGFloat yValue = [[YAr2 objectAtIndex:index] floatValue];  
84 - return [PNScatterChartDataItem dataItemWithX:xValue AndWithY:yValue];  
85 - };  
86 -  
87 - [scatterChart setup];  
88 - scatterChart.chartData = @[data01 , data02];  
89 -  
90 - // this is for drawing line to compare  
91 - CGPoint start = CGPointMake(20, 35);  
92 - CGPoint end = CGPointMake(80, 45);  
93 - [scatterChart drawLineFromPoint:start ToPoint:end WithLineWith:2 AndWithColor:PNBlack];  
94 -  
95 - scatterChart.delegate = self;  
96 - [viewController.view addSubview:scatterChartLabel];  
97 - [viewController.view addSubview:scatterChart];  
98 viewController.title = @"Scatter Chart"; 47 viewController.title = @"Scatter Chart";
99 } 48 }
100 } 49 }
101 50
102 -/* this function is used only for creating random points */  
103 -- (NSArray *) randomSetOfObjectsForScatterChart:(PNScatterChart *)chart{  
104 - NSMutableArray *array = [NSMutableArray array];  
105 - NSString *LabelFormat = @"%1.f";  
106 - NSMutableArray *XAr = [NSMutableArray array];  
107 - NSMutableArray *YAr = [NSMutableArray array];  
108 - for (int i = 0; i < 25 ; i++) {  
109 - [XAr addObject:[NSString stringWithFormat:LabelFormat,(((double)arc4random() / ARC4RANDOM_MAX) * (chart.AxisX_maxValue - chart.AxisX_minValue) + chart.AxisX_minValue)]];  
110 - [YAr addObject:[NSString stringWithFormat:LabelFormat,(((double)arc4random() / ARC4RANDOM_MAX) * (chart.AxisY_maxValue - chart.AxisY_minValue) + chart.AxisY_minValue)]];  
111 - }  
112 - [array addObject:XAr];  
113 - [array addObject:YAr];  
114 - return (NSArray*) array;  
115 -}  
116 -  
117 -  
118 -  
119 @end 51 @end