首页 / 更多教程 / 各种曲线、折线图的使用
各种曲线、折线图的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了各种曲线、折线图的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5122字,纯文字阅读大概需要8分钟。
内容图文
![各种曲线、折线图的使用](/upload/InfoBanner/zyjiaocheng/1082/40dadb2973d443feaceb13da86de6712.jpg)
在正在进行的项目中,需要用到折线图来展示数据,于是看大神就使用了github用户现有的源码,我们直接填充数据即可
首先再一看布局文件
1 <lecho.lib.hellocharts.view.LineChartView 2 android:id="@+id/chart_top" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:layout_weight="1" 6 android:paddingRight="10dp" 7 android:background="@color/colorPrimary" 8 />
再是获取数据填充
1 // 初始化 2 @ViewInject(R.id.chart_top) 3 private LineChartView chartTop; 4 // 这是从接口中获取数据 5 HttpHelper.post(this, UrlConfig.trendStat, parm, new HttpHelper.Ok() { 6 @Override 7publicvoid success(String str) { 8 object=JSON.parseObject(str); 9 JSONArray jlistX = object.getJSONArray("xdata"); 10 JSONArray jlistY=object.getJSONArray("ydata"); 11 xdata=new String[jlistX.size()]; 12 ydata=new String[jlistY.size()]; 13 maxValueY=0; 14for (int i=0;i<jlistX.size();i++){ 15 String x=jlistX.getString(i); 16 String y=jlistY.getString(i); 17int temp=Integer.valueOf(jlistY.getString(i)); 18if (temp>maxValueY){ 19 maxValueY=temp; 20 } 21 xdata[i]=x; 22 ydata[i]=y; 23 } 24 generateInitialLineData(); 25 generateColumnData(); 26 chartTop.setZoomLevel(0,0,(xdata.length/4)+1); 27// Cancel last animation if not finished. 28 chartTop.cancelDataAnimation(); 29// Start new data animation with 300ms duration; 30 chartTop.startDataAnimation(300); 31 } 32 33 @Override 34publicvoid complete(String str) { 35 36 } 37 }); 38//数据填充 39privatevoid generateInitialLineData() { 40int numValues = xdata.length; 41if (numValues<7){ 42 numValues=7; 43 } 44 List<AxisValue> axisValues = new ArrayList<AxisValue>(); 45 List<PointValue> values = new ArrayList<PointValue>(); 46for (int i = 0; i < numValues; ++i) { 47if (i>=xdata.length){ 48 axisValues.add(new AxisValue(i).setLabel("")); 49 }else { 50 values.add(new PointValue(i,Float.valueOf(ydata[i]))); 51 axisValues.add(new AxisValue(i).setLabel(xdata[i])); 52 } 53 54 } 55 Line line = new Line(values); 56 line.setColor(ChartUtils.DEFAULT_Line_COLOR).setCubic(true); 57 line.setPointColor(ChartUtils.DEFAULT_COLOR); 58 line.setFilled(true); 59 line.setHasGradientToTransparent(true); 60// line.setStrokeWidth(1); 61// line.setPathEffect(new DashPathEffect(new float[] { 1, 1, 1, 1}, 0)); 62 List<Line> lines = new ArrayList<Line>(); 63 lines.add(line); 64 65 lineData = new LineChartData(lines); 66 lineData.setAxisXBottom(new Axis(axisValues).setHasLines(true).setLineColor(ChartUtils.DEFAULT_COLOR_EEE).setTextSize(9)); 67 lineData.setAxisYLeft(new Axis().setHasLines(true).setMaxLabelChars(4).setLineColor(ChartUtils.DEFAULT_COLOR_EEE).setAutoGenerated(false).setValues(getYAxisMax(maxValueY))); 68 69 chartTop.setLineChartData(lineData); 70 71// For build-up animation you have to disable viewport recalculation. 72 chartTop.setViewportCalculationEnabled(false); 73 74// And set initial max viewport and current viewport- remember to set viewports after data. 75 Viewport v = new Viewport(0,getYAxisMax(maxValueY).get(10).getValue(), numValues-1, 0); 76 chartTop.setMaximumViewport(v); 77 chartTop.setCurrentViewport(v); 78 79 chartTop.setZoomType(ZoomType.HORIZONTAL); 80 } 81//根据y坐标最大值 动态调整y轴刻度 82private List<AxisValue> getYAxisMax(int num) { 83if (num==0){num=1;} 84 List<AxisValue> list=new ArrayList<>(); 85 String numStr=num+""; 86int mi=numStr.length()-1; 87float temp_f=num/10; 88while (temp_f>1){ 89 temp_f=temp_f/10; 90 } 91if (temp_f==1){ 92 mi=mi-1; 93 } 94for (int i=0;i<11;i++){ 95 AxisValue value1=new AxisValue((float) (i*Math.pow(10,mi))); 96 list.add(value1); 97 } 98return list; 99 } 100101privatevoid generateColumnData() { 102103int numSubcolumns = 1; 104int numColumns = ydata.length; 105106 List<AxisValue> axisValues = new ArrayList<AxisValue>(); 107 List<Column> columns = new ArrayList<Column>(); 108 List<SubcolumnValue> values; 109for (int i = 0; i < numColumns; ++i) { 110111 values = new ArrayList<SubcolumnValue>(); 112for (int j = 0; j < numSubcolumns; ++j) { 113 values.add(new SubcolumnValue((float) Math.random() * 50f + 5, ChartUtils.pickColor())); 114 } 115116 axisValues.add(new AxisValue(i).setLabel(ydata[i])); 117118 columns.add(new Column(values).setHasLabelsOnlyForSelected(true)); 119 } 120121 columnData = new ColumnChartData(columns); 122123 columnData.setAxisXBottom(new Axis(axisValues).setHasLines(true)); 124 columnData.setAxisYLeft(new Axis().setHasLines(true).setMaxLabelChars(2));138 } 139privatevoid generateLineData(int color, float range) { 140// Cancel last animation if not finished.141 chartTop.cancelDataAnimation(); 142143// Modify data targets144 Line line = lineData.getLines().get(0);// For this example there is always only one line.145 line.setColor(color); 146for (PointValue value : line.getValues()) { 147// Change target only for Y value.148 value.setTarget(value.getX(), (float) Math.random() * range); 149 } 150151// Start new data animation with 300ms duration;152 chartTop.startDataAnimation(300); 153 }
至于LineChartView,从大神哪里直接拿来使用了,详细大家可参照下面的链接
https://github.com/lecho/hellocharts-android中
原文:http://www.cnblogs.com/wangying222/p/6408366.html
内容总结
以上是互联网集市为您收集整理的各种曲线、折线图的使用全部内容,希望文章能够帮你解决各种曲线、折线图的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。