-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathCustomLineChart.java
More file actions
181 lines (148 loc) · 4.97 KB
/
CustomLineChart.java
File metadata and controls
181 lines (148 loc) · 4.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
package com.example.zhkmx.biggod;
import android.graphics.Color;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.LimitLine;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
import java.util.ArrayList;
/**
* Created by zhkmx on 2016/4/23.
*/
public class CustomLineChart {
private String chartName;
private float limitVal;//限制线值
private String limitName;//限制线名称
private String lineName;//设置曲线脚注
private ArrayList<String> xAxislabel;//横坐标标签
private int[] data;//图表数据源
public CustomLineChart(){
}
/**
* 构造函数
* 图表名称,限制线名称,曲线名称,限制线值,数据源,横坐标
* @param chartName
* @param limitName
* @param lineName
* @param limitVal
* @param data
* @param xAxislabel
*/
public CustomLineChart(String chartName,
String limitName,
String lineName,
float limitVal,
int[]data,
ArrayList<String> xAxislabel){
this.chartName = chartName;
this.limitName = limitName;
this.lineName = lineName;
this.limitVal = limitVal;
this.data = data;
this.xAxislabel = xAxislabel;
}
/**
* 构造图表
* 参数传入LineChart实例
* LineChart chart = (LineChart)view.findViewById(R.id.chart);
* @param chart
*/
public void generateChart (LineChart chart) {
ArrayList<ILineDataSet> allLinesList = new ArrayList<ILineDataSet>();
ArrayList<Entry> entryList = new ArrayList<Entry>();
for (int i = 0; i<getData().length;i++){
entryList.add(new Entry(getData()[i],i));
}
LineDataSet dataSet = new LineDataSet(entryList,getLineName());
dataSet.setLineWidth(2.5f);
// dataSet.setCircleSize(3.5f);
dataSet.setHighLightColor(Color.BLUE);
dataSet.setDrawValues(false);
dataSet.setValueTextColor(Color.GREEN);
dataSet.setValueTextSize(19f);
allLinesList.add(dataSet);
setLineChart(chart);
LineData mChartData = new LineData(getxAxislabel(),allLinesList);
chart.setData((LineData) mChartData);
chart.animateX(1500);
}
/**
* 设置折现图的样式
* 私有方法
* @param chart
*/
private void setLineChart(LineChart chart) {
String name = getChartName();
float limiteVal = getLimitVal();
String limitName = getLimitName();
chart.setDescription(name);
chart.setDrawGridBackground(false);//设置网格背景
chart.setScaleEnabled(true);//设置缩放
chart.setDoubleTapToZoomEnabled(true);//设置双击进行缩放
LimitLine ylimitLine = new LimitLine(limiteVal,limitName);
ylimitLine.setTextSize(10f);
ylimitLine.setTextColor(Color.RED);
ylimitLine.setLineColor(Color.RED);
// 获得左侧侧坐标轴
YAxis leftAxis = chart.getAxisLeft();
leftAxis.addLimitLine(ylimitLine);
//设置X轴
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//设置X轴的位置
xAxis.setDrawGridLines(false);
xAxis.setDrawAxisLine(true);
//设置右侧坐标轴
YAxis rightAxis = chart.getAxisRight();
rightAxis.setDrawAxisLine(false);//右侧坐标轴线
rightAxis.setDrawLabels(false);//右侧坐标轴数组Lable
}
/**************setter and getter***********************/
public int[] getData() {
return data;
}
public void setData(int[] data) {
this.data = data;
}
public ArrayList<String> getxAxislabel() {
return xAxislabel;
}
public void setxAxislabel(ArrayList<String> xAxislabel) {
this.xAxislabel = xAxislabel;
}
public float getLimitVal() {
return limitVal;
}
public void setLimitVal(float limitVal) {
this.limitVal = limitVal;
}
public String getLimitName() {
return limitName;
}
public void setLimitName(String limitName) {
this.limitName = limitName;
}
/**
* 设置图表标题
* @param chartName
*/
public void setChartName(String chartName){
this.chartName = chartName;
}
/**
* 获取图表标题
* @return
*/
public String getChartName(){
return chartName;
}
public String getLineName() {
return lineName;
}
public void setLineName(String lineName) {
this.lineName = lineName;
}
/**************setter and getter***********************/
}