android 记录血糖的折线图_Android图表引擎AChartEngine之折线图使用

1 packagexidian.zhr.utils;2

3 importjava.util.ArrayList;4 importjava.util.List;5

6 importorg.achartengine.ChartFactory;7 importorg.achartengine.chart.PointStyle;8 importorg.achartengine.model.XYMultipleSeriesDataset;9 importorg.achartengine.model.XYSeries;10 importorg.achartengine.renderer.XYMultipleSeriesRenderer;11 importorg.achartengine.renderer.XYSeriesRenderer;12

13 importandroid.content.Context;14 importandroid.graphics.Color;15 importandroid.graphics.Paint.Align;16 importandroid.view.View;17 importandroid.widget.LinearLayout;18

19 public classAChartEngineUtil20 {21

22

23 /**

24 * 获取坐标序列25 *@paramsize 序列点数26 *@paramvalues y轴值27 *@return坐标x轴序列 或 坐标y轴序列28 */

29 public static List getlist(int size,Listvalues)30 {31 List xy = new ArrayList();32

33 double[] list = new double[size];34 for(int i = 0 ; i < size ;i++)35 {36 list[i] = (values.isEmpty())?i : Double.valueOf(values.get(i));37 }38

39 xy.add(list);40

41 returnxy;42 }43

44

45 /**

46 * 构建XYMultipleSeriesRenderer.47 *48 *@paramcolors 每个序列的颜色49 *@paramstyles 每个序列点的类型(可设置三角,圆点,菱形,方块等多种)50 * ( PointStyle.CIRCLE, PointStyle.DIAMOND,PointStyle.TRIANGLE, PointStyle.SQUARE )51 *@returnXYMultipleSeriesRenderer52 */

53 public static XYMultipleSeriesRenderer buildRenderer(int[] colors,PointStyle[] styles)54 {55 XYMultipleSeriesRenderer renderer = newXYMultipleSeriesRenderer();56 //控制横纵轴的属性字大小

57 renderer.setAxisTitleTextSize(15);58 //控制横纵轴的值大小

59 renderer.setChartTitleTextSize(20);60 renderer.setLabelsTextSize(15);61 renderer.setLegendTextSize(15);62 renderer.setPointSize(5f);63 renderer.setMargins(new int[]64 { 20, 30, 15, 0});65 int length =colors.length;66 for (int i = 0; i < length; i++)67 {68 XYSeriesRenderer r = newXYSeriesRenderer();69 r.setColor(colors[i]);70 r.setPointStyle(styles[i]);71 renderer.addSeriesRenderer(r);72 }73 returnrenderer;74 }75

76 /**

77 * 设置renderer的一些坐标轴属性.78 *79 *@paramrenderer 要设置的renderer80 *@paramtitle 图表标题81 *@paramxTitle X轴标题82 *@paramyTitle Y轴标题83 *@paramxMin X轴最小值84 *@paramxMax X轴最大值85 *@paramyMin Y轴最小值86 *@paramyMax Y轴最大值87 *@paramaxesColor X轴颜色88 *@paramlabelsColor Y轴颜色89 */

90 public static voidsetChartSettings(XYMultipleSeriesRenderer renderer,91 String title, String xTitle, String yTitle, doublexMin,92 double xMax, double yMin, double yMax, intaxesColor,93 intlabelsColor)94 {95 renderer.setChartTitle(title);96 renderer.setXTitle(xTitle);97 renderer.setYTitle(yTitle);98 renderer.setXAxisMin(xMin);99 renderer.setXAxisMax(xMax);100 renderer.setYAxisMin(yMin);101 renderer.setYAxisMax(yMax);102 renderer.setAxesColor(axesColor);103 renderer.setLabelsColor(labelsColor);104 }105

106 /**

107 * 构建和时间有关的XYMultipleSeriesDataset,这个方法与buildDataset在参数上区别是需要List作参数.108 *109 *@paramtitles 序列图例110 *@paramxValues X轴值111 *@paramyValues Y轴值112 *@returnXYMultipleSeriesDataset113 */

114 public staticXYMultipleSeriesDataset buildDataset(String[] titles,115 List xValues, ListyValues)116 {117 XYMultipleSeriesDataset dataset = newXYMultipleSeriesDataset();118 int length =titles.length;119 for (int i = 0; i < length; i++)120 {121 XYSeries series = newXYSeries(titles[i]);122 double[] xV =xValues.get(i);123 double[] yV =yValues.get(i);124 int seriesLength =xV.length;125 for (int k = 0; k < seriesLength; k++)126 {127 series.add(xV[k], yV[k]);128 }129 dataset.addSeries(series);130 }131 returndataset;132 }133

134

135

136 /**

137 * 绘制图表138 *@paramcontext 当前环境139 *@paramlayout 承载图标的容器140 *@paramtitles 折线名称141 *@paramcolors 折线颜色142 *@paramdata y轴坐标数据143 *@paramxname x轴名字144 *@paramyname y轴名字145 */

146 public static void setchart(Context context,LinearLayout layout,String[] titles,int[] colors,147 Listdata,String xname,String yname)148 {149

150 //获取x轴坐标

151 List x = getlist(data.size(), new ArrayList());152 //获取y轴坐标

153 List values =getlist(data.size(),data);154

155 PointStyle[] styles = newPointStyle[] {PointStyle.CIRCLE};156 //构建XYMultipleSeriesRenderer

157 XYMultipleSeriesRenderer renderer =buildRenderer(colors, styles);158

159 setChartSettings(renderer, "", xname, yname, 0.5, 12.5, 0, 30,Color.LTGRAY, Color.LTGRAY);160

161 int length = renderer.getSeriesRendererCount();//获取点数量

162 for (int i = 0; i < length; i++)163 {164 ((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true);//设置图上的点为实心

165 }166 renderer.setXLabels(12);//设置x轴显示12个点,根据setChartSettings的最大值和最小值自动计算点的间隔

167 renderer.setYLabels(10);//设置y轴显示10个点,根据setChartSettings的最大值和最小值自动计算点的间隔

168 renderer.setShowGrid(true);//是否显示网格

169 renderer.setXLabelsAlign(Align.RIGHT);//刻度线与刻度标注之间的相对位置关系

170 renderer.setYLabelsAlign(Align.CENTER);//刻度线与刻度标注之间的相对位置关系

171 renderer.setZoomButtonsVisible(true);//是否显示放大缩小按钮

172 renderer.setPanLimits(new double[] { -10, 300, -10, 300 }); //设置拖动时X轴Y轴允许的最大值最小值.

173 renderer.setZoomLimits(new double[] { -10, 300, -10, 300 });//设置放大缩小时X轴Y轴允许的最大最小值.174

175 //构建view

176 View v =ChartFactory.getLineChartView(context,buildDataset(titles, x, values),renderer);177

178 layout.addView(v);179 }180 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值