PNChart

1、項目須要實現圖表(折線圖)的功能,因爲IOS並無原生的控件能夠開發圖表,經在網絡上搜索決定使用PNChart第三方庫實現折線圖的功能,PNChart還能夠建立柱狀圖、餅圖、圓形進度條等圖表視圖,我就再也不一一的舉例實現相關的視圖。網絡

(1)建立一個折線圖;
flex

//折線圖
    self.lineChart = [[PNLineChart alloc] initWithFrame:CGRectMake(0, 30, [UIScreen mainScreen].bounds.size.width, 200)];
    self.lineChart.legendStyle = PNLegendItemStyleStacked;
    self.lineChart.delegate = self;
    
    self.lineChart.showCoordinateAxis = YES; //顯示座標系
    self.lineChart.showGenYLabels = YES;
    self.lineChart.showLabel = YES;
    self.lineChart.thousandsSeparator = YES;
    
    
    [self.lineChart setXLabels:@[@"1月",@"2月",@"3月",@"4月",@"5月",@"6月",@"7月",@"8月",@"9月",@"10月",@"11月",@"12月"]];
    NSArray *data01Array = @[@60.1, @160.1, @126.4, @262.2, @186.2, @60.1, @160.1, @126.4, @262.2, @186.2, @60.1, @160.1];
    
    PNLineChartData *data01 = [PNLineChartData new]; //chart數據
    data01.dataTitle = @"Alpha";
    data01.color = PNFreshGreen; //折線的顏色
    data01.itemCount = self.lineChart.xLabels.count; //x軸座標item數
    data01.inflexionPointStyle = PNLineChartPointStyleCircle; //數值點的樣式
    
    data01.getData = ^(NSUInteger index) {
        
        CGFloat yValue = [data01Array[index] floatValue];
        return [PNLineChartDataItem dataItemWithY:yValue];
    };
    
    self.lineChart.chartData = @[data01];
    [self.lineChart strokeChart]; //畫折線,帶動畫
    
    
//PNChartDelegate委託的實現  
- (void)userClickedOnLinePoint:(CGPoint)point lineIndex:(NSInteger)lineIndex {
    
    NSLog(@"Click on line %f, %f, line index is %d",point.x, point.y, (int)lineIndex);
}


- (void)userClickedOnLineKeyPoint:(CGPoint)point lineIndex:(NSInteger)lineIndex pointIndex:(NSInteger)pointIndex {
    
    NSLog(@"Click Key on line %f, %f line index is %d and point index is %d",point.x, point.y,(int)lineIndex, (int)pointIndex);
    
    //在這個位置彈出邏輯
}


(2)更新折線圖的數據;動畫

你能夠建立一個更新的按鈕或者是一些選項卡來更新lineChart的內容;code

//更新折線的數據
- (void)updateView {
    
    NSArray *data01Array = @[@80.1, @180.1, @126.4, @292.2, @186.2, @80.1, @160.1, @126.4, @262.2, @186.2, @80.1, @160.1];
    
    PNLineChartData *data01 = [PNLineChartData new];
    data01.dataTitle = @"Alpha";
    data01.color = PNFreshGreen;
    data01.itemCount = self.lineChart.xLabels.count;
    data01.inflexionPointStyle = PNLineChartPointStyleCircle;
    
    data01.getData = ^(NSUInteger index) {
        
        CGFloat yValue = [data01Array[index] floatValue];
        return [PNLineChartDataItem dataItemWithY:yValue];
    };
    
    [self.lineChart updateChartData:@[data01]];
    [self.lineChart strokeChart];
}

折線圖效果:開發

相關文章
相關標籤/搜索