首页 > 其他 > 详细

利用EChart 画柱状图

时间:2014-02-18 07:38:31      阅读:388      评论:0      收藏:0      [点我收藏+]

代码下载:http://download.csdn.net/detail/qqmcy/6927265

DJColumnChartViewController.h

#import <UIKit/UIKit.h>
#import "EChart/EColumnChart.h"



@interface DJColumnChartViewController : UIViewController <EColumnChartDelegate, EColumnChartDataSource>
@property (strong , nonatomic) EColumnChart* m_eColumnChart;

@end

DJColumnChartViewController.m

#import "DJColumnChartViewController.h"
#import "EColumnDataModel.h"
#import "EColumnChartLabel.h"
#import "EFloatBox.h"
#import "EColor.h"
#import <stdlib.h>
@interface DJColumnChartViewController ()
@property (strong , nonatomic) NSArray* data;
@property (strong , nonatomic) EFloatBox* eFloatBox;
@property (strong , nonatomic) EColumn* eColumnSelected;
@property (strong , nonatomic) UIColor* tempColor;

@end

@implementation DJColumnChartViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view.
    self.view.transform  = CGAffineTransformMakeRotation(M_PI / 2);
    
    NSMutableArray* temp = [NSMutableArray array];
    for (int i = 0; i < 20; i++) {
        int value = arc4random() % 100;
        EColumnDataModel* eColumnDataModel = [[EColumnDataModel alloc] initWithLabel:[NSString stringWithFormat:@"%d",i] value:value index:i unit:@"kwh"];
        [temp addObject:eColumnDataModel];
    }
    
    _data = [NSArray arrayWithArray:temp];
    _m_eColumnChart = [[EColumnChart alloc] initWithFrame:CGRectMake(0, 150, 300, 200)];
    [_m_eColumnChart setColumnsIndexStartFromLeft:YES];
    [_m_eColumnChart setShowHighAndLowColumnWithColor:YES];
    _m_eColumnChart.delegate = self;
    NSLog(@"delegate = %@",_m_eColumnChart.delegate);
    _m_eColumnChart.dataSource = self;
    [self.view addSubview:_m_eColumnChart];
    
    
    
    
}
#pragma -mark- EColumnChartDataSource

-(NSInteger)numberOfColumnsInEColumnChart:(EColumnChart *)eColumnChart
{
    return [_data count];
}

-(NSInteger)numberOfColumnsPresentedEveryTime:(EColumnChart *)eColumnChart
{
    return 12;
}

-(EColumnDataModel*)highestValueEColumnChart:(EColumnChart *)eColumnChart
{
    EColumnDataModel* maxDataModel = nil;
    float maxValue = -FLT_MIN;
    for (EColumnDataModel* dataModel in _data) {
        if (dataModel.value > maxValue) {
            maxValue = dataModel.value;
            maxDataModel = dataModel;
        }
    }
    return maxDataModel;
}

-(EColumnDataModel*)eColumnChart:(EColumnChart *)eColumnChart valueForIndex:(NSInteger)index
{
    if (index >= [_data count] || index < 0) {
        return nil;
    }
    return [_data objectAtIndex:index + 1];
}

#pragma -mark- EColumnChartDelegate
- (void)eColumnChart:(EColumnChart *) eColumnChart
             didSelectColumn:(EColumn *) eColumn
{
    NSLog(@"Index: %d Value: %f",eColumn.eColumnDataModel.index,eColumn.eColumnDataModel.value);
    if (_eColumnSelected) {
        _eColumnSelected.barColor = _tempColor;
    }
    
    _eColumnSelected = eColumn;
    _tempColor = eColumn.barColor;
    eColumn.barColor = [UIColor blackColor];
    
    
    
}

-(void)eColumnChart:(EColumnChart *)eColumnChart fingerDidEnterColumn:(EColumn *)eColumn
{
    NSLog(@"Finger did enter %d",eColumn.eColumnDataModel.index);
    CGFloat eFloatBoxX = eColumn.frame.origin.x + eColumn.frame.size.width * 1.25;
    CGFloat eFloatBoxY = eColumn.frame.origin.y + eColumn.frame.size.height * (1 - eColumn.grade);
    if (_eFloatBox) {
        [_eFloatBox removeFromSuperview];
        _eFloatBox.frame = CGRectMake(eFloatBoxX, eFloatBoxY, _eFloatBox.frame.size.width, _eFloatBox.frame.size.height);
        [_eFloatBox setValue:eColumn.eColumnDataModel.value];
        [eColumnChart addSubview:_eFloatBox];
    }
    else{
        _eFloatBox = [[EFloatBox alloc] initWithPosition:CGPointMake(eFloatBoxX, eFloatBoxY) value:eColumn.eColumnDataModel.value unit:@"kwh" title:@"Title"];
        _eFloatBox.alpha = 0.0;
        [eColumnChart addSubview:_eFloatBox];
        
    }
    
    
    eFloatBoxY -= (_eFloatBox.frame.size.height + eColumn.frame.size.width * 0.25f);
    _eFloatBox.frame = CGRectMake(eFloatBoxX, eFloatBoxY, _eFloatBox.frame.size.width, _eFloatBox.frame.size.height);
    [UIView animateWithDuration:0.5f delay:0 options:UIViewAnimationOptionTransitionNone animations:^{
        _eFloatBox.alpha = 1.0f;
    } completion:^(BOOL finished) {
        
    }];
    
}
- (void) eColumnChart:(EColumnChart *) eColumnChart
        fingerDidLeaveColumn:(EColumn *) eColumn
{
    NSLog(@"");
}

/** When finger leaves wherever in the chart,
 will trigger both if finger is leaving from a column */
- (void) fingerDidLeaveEColumnChart:(EColumnChart *)eColumnChart
{
    if (_eFloatBox) {
        [UIView animateWithDuration:0.5f delay:0 options:UIViewAnimationOptionTransitionNone animations:^{
            _eFloatBox.alpha = 0.0f;
            _eFloatBox.frame = CGRectMake(_eFloatBox.frame.origin.x, _eFloatBox.frame.origin.y + _eFloatBox.frame.size.height, _eFloatBox.frame.size.width, _eFloatBox.frame.size.height);
        } completion:^(BOOL finished) {
            [_eFloatBox removeFromSuperview];
            _eFloatBox = nil;
        }];
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end



利用EChart 画柱状图

原文:http://blog.csdn.net/qqmcy/article/details/19293029

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!