关于achartengine的使用一些小经验

最近项目上要使用图表,便开始在网上找各种图表架包,好看的都是收费的,最后还是决定用google的achartengine.achartengine使用起来还算好,就是修改样式很烦.下面就分享下开发经验吧.
所有的chart都分两块,一块是Renderer(如XYMultipleSeriesRenderer,我的理解是,这个renderer为视图render的模板,就是你想用什么图标,一个图图表基本分2层,这个是最下面一层),一块是Dataset(如XYMultipleSeriesDataset,用于对视图数值的处理).

这边我就拿折线图举例吧.
首先需要

 
      XYMultipleSeriesRenderer mRenderer = new
XYMultipleSeriesRenderer();//创建你需要的图表最下面的图层
    
   XYSeriesRenderer seriesRenderer = new
XYSeriesRenderer();//创建你需要在图层上显示的具体内容的图层
    
   mRenderer.addSeriesRenderer(seriesRenderer);//添加进去

 
      XYMultipleSeriesDataset mDataset = new
XYMultipleSeriesDataset()//创建数据层
    
   XYSeries series = new
XYSeries("标题");//创建具体的数据层
    
   series .add(x,
y);//添加数据,一般都是for循环数据不断操作这一步添加的
    
   mDataset.addSeries(series);

 
    然后调用ChartFactory.getLineChartIntent(context, mDataset,
mRenderer),得到一个Intent类型的intent,startActivity(intent)就能得到图表了.这边需要在AndroidManifest.xml加上<activity
android:name="org.achartengine.GraphicalActivity"
/>.这边是跳界面查看图表,是全屏的.ChartFactory可以得到很多视图,ChartFactory.getBarChartIntent(context,
dataset, renderer, type,
activityTitle)就可以得到一个柱状图.以此类推啊.

有时候项目中开发,需要在界面的某一块展示视图,这时候我们可以通过
ChartFactory.getLineChartView(context, mDataset,
mRenderer)得到一个GraphicalView类型的视图.(这边就不要需要在AndroidManifest.xml加上<activity
android:name="org.achartengine.GraphicalActivity"
/>.)

其实图表的使用流程就是这样.但要做一个自己想要的视图,就需要设置mRenderer
的样式,seriesRenderer
的样式.

mRenderer样式设置:
    
   mRenderer.setShowAxes(false);//设置是否需要显示坐标轴
 
  
   mRenderer.setXAxisMin(1.3d);//设置X轴最小值
 
  
   mRenderer.setXAxisMax(10d);//设置X轴最大值

 
      mRenderer.setYAxisMin(0d);
//设置Y轴最小值
    
   mRenderer.setYAxisMax(maxY + maxY / 6); //
设置Y轴最大值
    
   mRenderer.setChartTitleTextSize(0);//设置图表标题字体大小,我这边设置0是把标题隐藏掉
 
  
   mRenderer.setYLabels(7);//设置Y轴标签数

 
  
   mRenderer.setExternalZoomEnabled(true);//设置是否可以缩放
 
      mRenderer.setZoomInLimitY(maxY + maxY /
6);//设置Y轴最大缩放限
    
   mRenderer.setZoomInLimitX(5);//设置X轴最大缩放限
 
      mRenderer.setPanEnabled(true,
false);//设置滑动,这边是横向可以滑动,竖向不可滑动
    
   mRenderer.setXLabels(XLabel.size() -
1);//设置X标签数量
    
   mRenderer.setXLabelsPadding(200);//设置标签的间距
 
  
   mRenderer.setXLabelsAngle(-45f);//设置标签倾斜度
 
      for (int i = 0; i < XLabel.size();
i++)
    
   {
       
    mRenderer.addXTextLabel(i,
XLabel.get(i));//这边是自定义自己的标签,显示自己想要的X轴的标签,需要注意的是需要setXLabels(0)放在标签重叠(就是自定义的标签与图表默认的标签)
 
      }    
 

    
   mRenderer.setPanLimits(new double[] {0, (XLabel.size()) * 2,
0, maxY});//设置滑动范围,这边我很好奇他的单位,一直有点小问题
    
   mRenderer.setAxesColor(context.getResources().getColor(R.color.text_hui));//设置数轴的颜色
 
  
   mRenderer.setGridColor(context.getResources().getColor(R.color.text_hui999999));
//设置网格的颜色   
    
   mRenderer.setShowGrid(true);
/设置是否需要显示网格
    
   mRenderer.setYTitle(label);//设置Y轴标题
 
  
   mRenderer.setLabelsColor(Color.BLACK);//设置标签颜色
 
      mRenderer.setYLabelsAlign(Align.LEFT,
0);//设置标签居Y轴的方向
    
   mRenderer.setAxisTitleTextSize(20);
 
      mRenderer.setYLabelsColor(0,
context.getResources().getColor(R.color.text_hui));    
   mRenderer.setLabelsTextSize(14);
 
      mRenderer.setZoomLimits(new double[] {0, maxX *
5, 0, maxY + maxY / 6});//设置缩放限制,setZoomInLimitY等一样
 
  
   mRenderer.setXLabelsColor(context.getResources().getColor(R.color.text_hui));
 
  
   mRenderer.setMarginsColor(context.getResources().getColor(R.color.chart_bg));//设置画布距数轴之间的颜色

 
  
   mRenderer.setZoomRate(1.4f);//放大几倍

seriesRenderer设置部分:

 
      seriesRenderer.setFillBelowLine(false); //
设置折线下方是否填充
    
   seriesRenderer.setFillBelowLineColor(context.getResources().getColor(R.color.chart_content_color));//填充色
 
      seriesRenderer.setPointStyle(PointStyle.CIRCLE);
/折线点的样式
    
   seriesRenderer.setPointStrokeWidth(5f);//折线点的大小
 
  
   seriesRenderer.setDisplayChartValues(true);//设置显示折线的点对应的值
 
  
   seriesRenderer.setChartValuesTextSize(16);
 
  
   seriesRenderer.setColor(Color.BLUE);
 
  
   seriesRenderer.setChartValuesSpacing(7);
 
  
   seriesRenderer.setLineWidth(3.0f)//折线宽度
 
  
   seriesRenderer.setDisplayChartValuesDistance(5);///折线点的值距离折线点的距离
 
  
   seriesRenderer.setChartValuesTextAlign(Align.RIGHT);
 
      DecimalFormat df1 = new
DecimalFormat(".00");
    
   seriesRenderer.setChartValuesFormat(df1);//设置折线点的值的格式,显示小数点后2位

大体就是这样,这边举例的是折线图,其实柱状图也是这样的流程.可以参考demo,样式我只能提供这么多了.一句话,不管什么视图,流程都是这个流程.
如果有啥不对的,欢迎指出,不能把错的分享给别人了,嘿嘿.

关于achartengine的使用一些小经验,布布扣,bubuko.com

时间: 2024-10-19 15:54:00

关于achartengine的使用一些小经验的相关文章

OC开发学习过程中的一些小经验

1.引入头文件以及框架 :  @import   XXXX         XXXX表示需要引入的文件/框架2.头文件引用循环:两个头文件相互包含时,将其中一个头文件的类用@class引入3.设置边角幅度 :[  XX.layer setCornerRadius:100 ]  ;    XX表示需要设置边角的对象,一般是给按钮设置,边角幅度大小跟最后数字取值关联.4.多个引号处理方法:引号前加\,如果还有括号影响,就再单独用@“ “将其框起来..专业术语叫转义字符.. 5.在UIWebview中

新产品为了效果,做的比较炫,用了很多的图片和JS,所以前端的性能是很大的问题,分篇记录前端性能优化的一些小经验。

第一篇:HTTP服务器 因tomcat处理静态资源的速度比较慢,所以首先想到的就是把所有静态资源(JS,CSS,image,swf) 提到单独的服务器,用更加快速的HTTP服务器,这里选择了nginx了,nginx相比apache,更加轻量级, 配置更加简单,而且nginx不仅仅是高性能的HTTP服务器,还是高性能的反向代理服务器. 目前很多大型网站都使用了nginx,新浪.网易.QQ等都使用了nginx,说明nginx的稳定性和性能还是非常不错的. 1. nginx 安装(linux) htt

Java游戏编程的几个小经验

1.输出图片,最直接的方式是 Image img = Toolkit.getDefaultToolkit().getImage("images/cheer1.jpg"); graphics.drawImage(img, 0, 0, 500, 500, null); 注意:路径是相对于工程根目录的,不是相对于src的 2.深刻理解 repaint()  update()   paint() 三者之间的关系 每一次输出图片,都要先重新获得一次画笔graphics,(通过getGraphic

Android小经验

转载自:http://mp.weixin.qq.com/s?__biz=MzA4MjU5NTY0NA==&mid=404388098&idx=1&sn=8bbbba7692dca68cdda2212dec4d86c0&scene=21#wechat_redirect 今天是冯建同学投稿.总结他在Android开发方面的各种小经验,我认为很有意义,所谓经验丰富有时候是指积累的这些小经验许多,他这篇分享相信会帮助到一些朋友.我也曾推荐过他的 APK魔鬼瘦身 一文.没看过的朋友也

小经验

1.设置tableview返回时取消选中状态 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.tableview deselectRowAtIndexPath:self.tableview.indexPathForSelectedRow animated:YES]; } 2.设置UIPickerView默认选中 [pickerView selectRow:5 inComponent:0 

开发中各种小经验或技巧

1.js.jsp种判断list长度 js  :  list.length jsp: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>            list的长度是:${fn:le

那些小经验

(1) A. ? 1 2 3 4 <input type="radio" name="bank"> <label>       <img src="..." alt=""> </label> input和lable自然对齐,label高度显然没有包裹img,如果给img设置vertical-align:middle.则label就会在img垂直中心,input和lable本来就会

Android开发的16条小经验总结

Android开发的16条小经验总结,希望对各位搞Android开发的朋友有所帮助. 1. TextView中的getTextSize返回值是以像素(px)为单位的, 而setTextSize()是以sp为单位的. 所以如果直接用返回的值来设置会出错,解决办法是用setTextSize()的另外一种形式,可以指定单位: setTextSize(int unit, int size)    TypedValue.COMPLEX_UNIT_PX : Pixels    TypedValue.COMP

php小经验:解析preg_match与preg_match_all 函数

php小经验:解析preg_match与preg_match_all 函数 本篇文章是对php中的preg_match函数与preg_match_all函数进行了详细的分析介绍,需要的朋友参考下 正则表达式在 PHP 中的应用在 PHP 应用中,正则表达式主要用于:•正则匹配:根据正则表达式匹配相应的内容•正则替换:根据正则表达式匹配内容并替换•正则分割:根据正则表达式分割字符串在 PHP 中有两类正则表达式函数,一类是 Perl 兼容正则表达式函数,一类是 POSIX 扩展正则表达式函数.二者