Description: the chart is plotted by parameters set in the current files.
#import <UIKit/UIKit.h> #import <Charting/Chart.h> #import "Charting/ColumnSeries.h" #import "Charting/AreaSeries.h" #import "DataSource.h" #import "Charting/BarSeries.h" #import "Charting/PieSeries.h" #import "Charting/LineSeries.h" #import "Charting/LinePoint.h" #import "Charting/ChartTouchesDelegate.h" #import "Charting/ChartLabel.h" #import "Charting/BubbleSeries.h" #import "ChartTypes.h" #import "RadialGradientBrush.h" #import "GradientStop.h" #import "Charting/ChartMarker+Charting.h" @interface ViewController : UIViewController<ChartTouchesDelegate,TimeAxisDelegate>{ Chart *chart; float max; float min; NSMutableDictionary *m_numberFormat; int axisType; BOOL hideAxis; int chartType; NSArray *m_colors; DataSource *datasource; RadialGradientBrush *radialBrush; BOOL outputInfo; } - (ChartLabel *)createDefaultLabel; - (void) setChartSettings; - (void) drawAllSeries; - (NSDictionary *) createDictForBrushWithBaseColor:(UIColor *) color; @end
#import "ViewController.h" #import "Brush.h" #import "UIColor+transition.h" #import <charting/gradientbrush+charting.h> #import <charting/gradientstop+charting.h> #import <charting/lineargradientbrush+charting.h> #import <charting/radialgradientbrush+charting.h> #import <charting/solidcolorbrush+charting.h> #define ColorWithRGBA(_r, _g, _b, _a) [UIColor colorWithRed:(_r) / 255.0f green:(_g) / 255.0f blue:(_b) / 255.0f alpha:(_a) / 255.0f] @implementation ViewController - (void)dealloc { [super dealloc]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; m_numberFormat = [[NSMutableDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:NO], @"asInSource", [NSNumber numberWithInt:2], @"decNumbers", [NSNumber numberWithBool:YES], @"separator", @"", @"prefix", @"", @"suffix", [NSNumber numberWithBool:NO], @"negativeRed", nil] retain]; m_colors = [[NSArray arrayWithObjects: ColorWithRGBA(19, 88, 138, 255 ), ColorWithRGBA(109, 167, 192, 255 ), ColorWithRGBA(41, 171, 226, 255 ), ColorWithRGBA(0, 169, 157, 255 ), ColorWithRGBA(103, 124, 139, 255 ), ColorWithRGBA(221, 241, 250, 255 ), ColorWithRGBA(169, 221, 243, 255 ), ColorWithRGBA(102, 203, 196, 255 ), ColorWithRGBA(208, 222, 232, 255 ), ColorWithRGBA(190, 160, 186, 255 ), nil] retain]; // Create a chart and set size chart = [[Chart alloc] initWithName:@"Chart"]; chart.frame=CGRectMake(0, 0, 600, 550); chart.plotArea.zoomEnabled = NO; // Determine title parameters chart.caption.text = @"Chart"; chart.caption.textColor = [UIColor blackColor]; chart.caption.maxTextLength = 100; chart.caption.blockAlignment = AlignmentCenter; // Determine legend parameters chart.legend.background = [SolidColorBrush solidColorBrushWithColor:[UIColor whiteColor]]; chart.legend.borderRadius = 2; chart.legend.borderThickness = 1; chart.legend.borderColor = [UIColor whiteColor]; chart.legend.font = [UIFont fontWithName:@"Arial" size:12]; chart.legend.legendOrientation = LegendOrientationTop; chart.legend.textColor = [UIColor blackColor]; for (ChartSeries *s in chart.seriesList) { [chart deleteSeries:s]; } chart.usingRightToLeft = NO; chart.minimalHitRadius = 4; chart.chartArea.borderColor = [UIColor whiteColor]; chart.chartArea.backgroundColor = [UIColor whiteColor]; chart.chartArea.background = [SolidColorBrush solidColorBrushWithColor:[UIColor whiteColor]]; // Create data source datasource = [[DataSource alloc] init]; [chart setDataSource :datasource]; [self setChartSettings]; [self drawAllSeries]; // Set link to data source [chart setDelegate:self]; // Set maximum and minimum values by Y axis for data source [datasource prepare]; [chart forceDataUpdate]; // Execute custom example [self executeExample]; // Display chart [self.view addSubview:chart]; } // Function for example execution -(void) executeExample{ }; - (void)drawAllSeries { [chart deleteAllSeries]; int seriesCount = datasource.countSeries; for (int i = 0; i < seriesCount; ++i) { axisType = ValueAxisAbsolute; hideAxis = NO; BubbleSeries *ser = [[BubbleSeries new] autorelease]; ser.backgroundColor = [UIColor blackColor]; ser.marker.borderThickness = 1; ser.marker.borderColor = [UIColor blackColor]; ser.marker.shape = MarkerShapeCircle; ser.renderTrace = NO; ser.color = [UIColor blueColor]; ser.thickness = 2; UIColor *color = [m_colors objectAtIndex:i % [m_colors count]]; radialBrush = [RadialGradientBrush new]; GradientStop *st1 = [[[GradientStop alloc] initWithColor:[UIColor whiteColor] offset:0.1] autorelease]; GradientStop *st2 = [GradientStop gradientStopWithColor:color offset:1.0]; [radialBrush setGradientStops:[NSMutableArray arrayWithObjects:st1,st2, nil]]; radialBrush.center = CGPointMake(0.5, 0.5); radialBrush.opacity = 1.0; RadialGradientBrush *brush = [radialBrush autorelease] ; [[radialBrush.gradientStops objectAtIndex:1] setColor:color]; [ser.marker setBackground:brush]; ser.shadowOffset = CGSizeMake(0, 0); ser.showShadow = YES; ser.dataIndex = i; ser.defaultLabel = [self createDefaultLabel]; [chart addSeries:ser]; } [chart forceDataUpdate]; ((ValueAxis *)[chart.axes objectForKey:[NSNumber numberWithInt:AxisLineX]]).valueAxisType = axisType; ((ValueAxis *)[chart.axes objectForKey:[NSNumber numberWithInt:AxisLineY]]).valueAxisType = axisType; ((ValueAxis *)[chart.axes objectForKey:[NSNumber numberWithInt:AxisLineX]]).visible = !hideAxis; ((ValueAxis *)[chart.axes objectForKey:[NSNumber numberWithInt:AxisLineY]]).visible = !hideAxis; } - (void )viewDidUnload { [super viewDidUnload]; } - (BOOL )shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } - (void )chartTouchesTapInView:(UIView *)v withPoint:(CGPoint)point { UIView *sender = [v hitTest:point withEvent:nil]; if ([sender isKindOfClass:[ChartPoint class]]) { ChartPoint *pt = (ChartPoint *)sender; if([pt isKindOfClass:[BubblePoint class]]) { NSLog(@"%@",[((BubblePoint *)pt).marker dumpConfigurationToDict]); } NSLog(@"%@",pt.series); NSLog(@"%d",pt.noValue); if (pt.chartLabel) { pt.chartLabelVisible = !pt.chartLabelVisible; if (pt.chartLabelVisible) { [pt moveAboveAllByZOrder]; ((BubblePoint *)pt).r *= 1.1; ((BubblePoint *)pt).marker.borderThickness = 2; } else { [pt restoreZOrder]; ((BubblePoint *)pt).r /= 1.1; ((BubblePoint *)pt).marker.borderThickness = 1; } } [chart setNeedsLayout]; } else { ((TimeAxis *)[chart.axes objectForKey:[NSNumber numberWithInt:AxisTypeTimeline]]).index++; } [chart setNeedsDisplay]; } - (void)setChartSettings { ValueAxis *axisX = (ValueAxis *)[chart.axes objectForKey:[NSNumber numberWithInt:AxisLineX]]; axisX.axisThickness = 1; // X axis thickness axisX.majorTicks.thickness = 0; // Thickness of X axis major tick marks axisX.minorTicks.thickness = 0; // Thickness of X axis minor tick marks axisX.startOffset = -0.1; ValueAxis *axisY = (ValueAxis *)[chart.axes objectForKey:[NSNumber numberWithInt:AxisLineY]]; axisY.startOffset = -0.1; axisY.axisThickness = 1; // Y axis thickness axisY.majorTicks.thickness = 1; axisY.majorTicks.size = 3; // Tick mark length axisY.minorTicks.thickness = 0; axisY.showGrid = YES; // Display grid axisY.gridThickness = 1; // Grid thickness axisY.gridColor = ColorWithRGBA(200, 200, 200, 255); axisY.caption.visible = YES; axisY.caption.text = @"axisY"; axisY.caption.font = [UIFont fontWithName:@"Arial" size:20.0]; if(outputInfo){ NSLog(@"%f",axisY.maxOffset); NSLog(@"%f",axisY.pointsVisible); } // Determine axis tick mark parameters AxisTicks *majorTics = ((ValueAxis *)[chart.axes objectForKey:[NSNumber numberWithInt:AxisLineY]]).majorTicks; ((ValueAxis *)[chart.axes objectForKey:[NSNumber numberWithInt:AxisLineY]]).minorTicks = majorTics; // Determine bubble axis RadialAxis *radAxis = [chart.axes objectForKey:[NSNumber numberWithInt:AxisTypeR]]; radAxis.maxSize = 50; // Maximum size of bubble radAxis.minSize = 10; // Minimum size of bubble radAxis.visible = YES; // Determine timeline parameters TimeAxis *timeAxis = ((TimeAxis *)[chart.axes objectForKey:[NSNumber numberWithInt:AxisTypeTimeline]]); timeAxis.visible = YES; timeAxis.delegate = chart; timeAxis.minIndex = 0; timeAxis.maxIndex = 5; timeAxis.jumpTime = AnimateTypeFast; timeAxis.font = [UIFont fontWithName:@"Times New Roman" size:14]; timeAxis.label.text = @"TimeAxis"; timeAxis.delayTime = AnimateTypeFastest; timeAxis.minTickSpacing = 10.0; timeAxis.tickColor = [UIColor blueColor]; if(outputInfo) NSLog(@"%d",timeAxis.axisType); Thickness th = {10,0,0,20}; // Margins chart.legend.margin = th; // Legend margins th.bottom = 0; th.left = th.right = th.top = 10; chart.chartArea.padding = th; // Chart area margins } - (ChartLabel *)createDefaultLabel { ChartLabel *result = [[[ChartLabel alloc] initWithFrame:CGRectZero] autorelease]; // Create a label result.background = [[SolidColorBrush new] autorelease]; // Set color result.borderColor = [UIColor blackColor]; // Border color result.borderThickness = 1; result.borderRadius = 10; result.font = [UIFont fontWithName:@"Arial" size:18]; // Font result.textAlignment = (Alignment)UITextAlignmentCenter; result.textColor = [UIColor blackColor]; result.mask = [NSString stringWithFormat:@"%@#FVAL%@", (NSString *)[m_numberFormat objectForKey:@"prefix"], (NSString *)[m_numberFormat objectForKey:@"suffix"]]; result.countOfDecimalNumbers = [((NSNumber *)[m_numberFormat objectForKey:@"decNumbers"]) intValue]; result.displayNegativesInRed = [(NSNumber *)[m_numberFormat objectForKey:@"negativeRed"] boolValue]; result.hasHorizontalNoteLine = result.hasVerticalNoteLine = result.hasFootNoteLine = NO; result.minWidth = 0; return result; } - (void)chartDataReady:(id)sender { NSLog(@"Data was load"); } - (void)chartTouchesSwipeInView:(UIView *)v withDirection:(UISwipeGestureRecognizerDirection)direction { NSLog(@"Swipe"); } @end
See also: