-- 请看3.0版本
在我们开发过程中有些时候要绘制折线图或条形图,要是做金融类的难免要接触到K线图
今天我就来谈谈我的经验
首先我们先花2分钟来看看这一幅图
在初中我们就知道 点动成线 线动成面
在这里我们把每一个点称之为实体(Entry) 而相应的每个实体有对应的下标和值
我们把实体的集合称之为数据集(Dataset) 而其又有2个属性 一个是实体的图例 另外一个是存放实体的数组
而数据集的集合名为图表数据(Data) 其2个属性分别为 x标签数组 与 存放数据集的数组
最后我们把图表数据发在图表(chart)里就大功告成了
废话不多说,下面就是上代码了
- (void)setUI{
//1 创建一张表
LineChartView * lineView =[[LineChartView alloc]initWithFrame:CGRectMake(0, 30, 300, 600)];
[self setChartWith:lineView];
//2. 创建数据
//2.1
NSMutableArray * XArray =[[NSMutableArray alloc]init];
NSMutableArray * YArray =[[NSMutableArray alloc]init];
for (int i = 0 ; i<16; i++) {
ChartDataEntry * entry =[[ChartDataEntry alloc]initWithValue: arc4random()%96+i xIndex:i];
[YArray addObject:entry];
[XArray addObject:[NSString stringWithFormat:@"%d天",i]];
}
//2.2
LineChartDataSet * dataSet =[[LineChartDataSet alloc]initWithYVals:YArray label:@"橙色的线"];
[self setDataSetWith:dataSet];
//2.3
LineChartData * LineData =[[LineChartData alloc]initWithXVals:XArray dataSets:@[dataSet]];
lineView.data = LineData;
//这是一条虚线
ChartLimitLine *ll1 = [[ChartLimitLine alloc] initWithLimit:100.0 label:@"Y=100"]; //100 是说y轴的值 是Y=100的那条线
ll1.lineWidth = 3.0; //高度
ll1.lineDashLengths = @[@3.f, @3.f]; //第一个是 线的宽 第二个是间距
ll1.labelPosition = ChartLimitLabelPositionRightTop;//这条线的名字的位置
ll1.valueFont = [UIFont systemFontOfSize:10.0];//线名字的大小
ll1.lineColor =[UIColor colorWithRed:0.396 green:1.000 blue:0.875 alpha:1.000];
[lineView.leftAxis addLimitLine:ll1];
[self.view addSubview:lineView];
}
//图表的设置
- (void)setChartWith:(id)chart{
LineChartView * chartView = chart;
chartView.descriptionText = @"这表的名字";
chartView.rightAxis.enabled = NO;
chartView.xAxis.labelPosition = XAxisLabelPositionBothSided;
chartView.leftAxis.drawGridLinesEnabled = NO;
chartView.xAxis.drawGridLinesEnabled = NO;
}
//图表的数据集的设置
- (void)setDataSetWith:(id)dataSet{
LineChartDataSet * dataSet1 = dataSet;
dataSet1.drawCirclesEnabled = NO;
dataSet1.colors = @[[UIColor orangeColor]];
}
好了 然后效果图就是这样子的了
折线图(line)和柱状图(bar)是一样的
今天就先写到这里 今后再继续完善。
网友评论
我没想到 你实现了吗