android achartengine 折线图例子
第1页画折线图技巧分享
是为应用而设计的绘图工具库。可用于绘制多种图标,目前该绘图工具库的最新稳定版本是0.7。
支持的图表类型:折线图、区域图、散点图、时间图、柱状图、饼状图、气泡式图表、环形图、高低交替图。
以上每种图表都可以包含多个序列, 可以将X轴以水平或垂直的形式显示,也支持很多自定义的特性。另外,图表可以作为Viewl构建,也可以作为构建这样可以被用于启动一个活动()。
以下是的效果图展示:
下面给大家分享一下关于如何使用画折线图的技巧
其实方法跟柱状图的制作差不多,但是应使用.()方法获取到。看中的代码:
class main {
final int = 2;
/** when the is first . */
> maps=>();
@
void (tate) {
super.();
// (R..main);
// 加入 “调度查询”
=new ();
map.put("name","折线图");
map.put("desc", "显示折线图");
maps.add(map);
// 构建的适配器
=new (this,maps,
.R..,// SDK库中提供的一个包含两个的
new []{"name","desc"},// maps中的两个key
new int[]{.R.id.text1,.R.id.text2}// 两个的id
);
this.();
// 监听器方法
( l, View v, int , long id) {
super.(l,v, , id);
=.(this, (),());
();
() {
= new set();
final int nr = 10;// 每个系列种包含10个随机数
r = new ();
for (int i = 0; i
// 新建一个系列(线条)
= new ("" + (i + 1));
for (int k = 0; k
int x=r.();// x:0-10之间的随机整数
inty=50+r.()%50;// y:50-100之间的随机整数
.add(x,y);// 往系列中加入一个随机分布的点
// 把添加了点的折线放入
.();
;
() {
// 新建一个
= new erer();
.e(20); // 设置图表标题文本大小
.(15); // 设置轴标签文本大小
.(15); // 设置图例文本大小
.(new int[] {20, 30, 15,0}); // 设置4边留白
// 设置一个系列的颜色为蓝色
r = ();
r.(Color.BLUE);
// 往中增加一个系列
.(r);
// 设置另一个系列的颜色为红色
r = ();
r.(Color.GREEN);
// 往中增加另一个系列
.(r);
;
以下是需要注意的3个方法:
1、方法
当点击“柱状图”菜单时,使用 .获得:
= .(this, (),());
2、方法
使用随机数构建了2个系列中的点坐标x和y:
int x=r.();// x:0-10之间的随机整数
inty=50+r.()%50;// y:50-100之间的随机整数
.add(x,y);// 往系列中加入一个随机分布的点
由于使用随机数作为点的x、y坐标,所以形成的折线图是很不规律的:
3、方法
构建了erer,在其中加入了两个。注意,这里的要用 ,而不能使用 。
折线图例子
需要用到第三方的jar包,链接地址:
class {
123456789 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
@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String[] titles = new String[] { "当天客流密集指数", "昨日客流密集指数", "上周客流密集指数", "上月客流密集指数" };Listvalues = new ArrayList ();values.add(new double[] { 2.3, 2.5, 3.8, 6.8, 5.4, 4.4, 6.4, 6.1, 3.6,8.3, 7.2, 3.9 });values.add(new double[] { 1.2, 1.8, 4.5, 5.2, 2.5, 2.4, 2.6, 2.6, 2.3, 1.8,1.4, 1.1,3.5,4.2,7.8,5.3,2.3,1.7 });values.add(new double[] { 5.2, 5.3, 8.3, 1.2, 1.7, 2.2, 2.2, 2.4, 1.9,1.5, 9.4, 6.2,3.2,4.6,8.8,5.1,2.2,1.5 });values.add(new double[] { 3, 3.2, 1.1, 1.5, 1.9, 2.3, 2.6, 2.5, 2.2,1.8, 1.3, 1.0,3.7,4.5,7.5,5.1,2.6,1.9 });int[] colors = new int[] { Color.rgb(13, 147, 12), Color.rgb(251, 179, 30), Color.rgb(219, 219, 0),Color.rgb(255,0,0) };PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE,PointStyle.DIAMOND, PointStyle.TRIANGLE, PointStyle.SQUARE };XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles);int length = renderer.getSeriesRendererCount();for (int i = 0; i < length; i++) {/*((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true);*/XYSeriesRenderer xyrenderer = (XYSeriesRenderer)renderer.getSeriesRendererAt(i);xyrenderer.setDisplayChartValues(true);xyrenderer.setFillPoints(true);}setChartSettings(renderer, "轨道交通全路网客流密集指数", "", "指数", 0.5, 18.5, 0,10, Color.LTGRAY, Color.rgb(106, 106, 113));String pattern="00"; java.text.DecimalFormat df = new java.text.DecimalFormat(pattern);for(int j=1;j<19;j++){renderer.addXTextLabel(j, df.format(j+5)+":00");}Intent intent = ChartFactory.getLineChartIntent(this,buildBarDataset(titles,values), renderer,"客流密集指数");startActivity(intent);finish(); }
/**
* a bar using the .
* @param the
* @param the
* @ the XY bar
*/
set ([] ,
List ) {
set = new set();
int = .;
for (int i = 0; i < ; i++) {
= new ([i]);
[] v = .get(i);
int = v.;
for (int k = 0; k < ; k++) {
.add(v[k]);
.(.());
;
123456789 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
/*** Sets a few of the series renderer settings.* * @param renderer the renderer to set the properties to* @param title the chart title* @param xTitle the title for the X axis* @param yTitle the title for the Y axis* @param xMin the minimum value on the X axis* @param xMax the maximum value on the X axis* @param yMin the minimum value on the Y axis* @param yMax the maximum value on the Y axis* @param axesColor the axes color* @param labelsColor the labels color*/protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor,int labelsColor) {renderer.setChartTitle(title);renderer.setXTitle(xTitle);renderer.setYTitle(yTitle);renderer.setXAxisMin(xMin);renderer.setXAxisMax(xMax);renderer.setYAxisMin(yMin);renderer.setYAxisMax(yMax);renderer.setAxesColor(axesColor);renderer.setLabelsColor(labelsColor);}/*** Builds an XY multiple series renderer.* * @param colors the series rendering colors* @param styles the series point styles* @return the XY multiple series renderers*/ protected XYMultipleSeriesRenderer buildRenderer(int[] colors,PointStyle[] styles) {XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();setRenderer(renderer, colors, styles);return renderer; }/*** 设置折线图* @param renderer* @param colors 背景色* @param styles 样式*/ protected void setRenderer(XYMultipleSeriesRenderer renderer, int[] colors,PointStyle[] styles) {renderer.setPointSize(5f);renderer.setLegendTextSize(22); //设置图例字号renderer.setLegendHeight(50);renderer.setChartTitleTextSize(35);// 设置图表标题文本大小renderer.setAxisTitleTextSize(20);// 设置坐标轴标题文本大小renderer.setLabelsTextSize(15);//设置轴标签文本大小 renderer.setBarSpacing(0.5);// 设置间距renderer.setXLabels(0);// 设置 X 轴不显示数字(改用我们手动添加的文字标签));//设置X轴显示的刻度标签的个数renderer.setYLabels(10);// 设置合适的刻度,在轴上显示的数量是 MAX / labelsrenderer.setMargins(new int[] { 50, 50, 10, 0 });// 图形 4 边距 设置4边留白renderer.setShowGridX(true);//设置是否在图表中显示网格renderer.setYLabelsAlign(Align.RIGHT);// 设置y轴显示的分列,默认是 Align.CENTERrenderer.setPanEnabled(false, false);// 设置x方向可以滑动,y方向不可以滑动renderer.setZoomEnabled(false, false);// 设置x,y方向都不可以放大或缩小renderer.setXLabelsColor(Color.rgb(106, 106, 113));renderer.setYLabelsColor(0, Color.rgb(106, 106, 113));//设置是否显示背景色renderer.setApplyBackgroundColor(true);//设置背景色renderer.setBackgroundColor(Color.argb(0, 220, 228, 234));//设置报表周边颜色renderer.setMarginsColor(Color.argb(0, 220, 228, 234));int length = colors.length;for (int i = 0; i < length; i++) {XYSeriesRenderer r = new XYSeriesRenderer();r.setColor(colors[i]);r.setPointStyle(styles[i]);renderer.addSeriesRenderer(r);} }
效果图:
通过后台取到JSON,然后解析: