AChartEngine折线图实例
最近做项目要用到图表,在网上找相关的解决方案找了很久,搜到最多的就是这个框架,所以就开始研究下怎么使用,首先研究的就是折线图,如是做了一个实例。
AChartEngine下载地址:http://code.google.com/p/achartengine/downloads/list 。
先简单描述下这个例子:用开源的图表框架AChartEngine的折线图显示最近7天的最高气温变化趋势。
最终效果如下图(手机分辨率800*480,4寸大小):

布局文件activity_line_chart.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffffffff"
tools:context=".MainActivity" > <LinearLayout android:id="@+id/chart"
android:orientation="horizontal"
android:background="#ffffff"
android:splitMotionEvents="false"
android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1"/> </LinearLayout>
java代码文件MainActivity.java:
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer; import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.widget.LinearLayout; public class MainActivity extends Activity {
LinearLayout chart;
GraphicalView chartView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_line_chart);
chart = (LinearLayout) findViewById(R.id.chart);
showChart();
}
private void showChart() {
XYMultipleSeriesDataset mDataSet=getDataSet();
XYMultipleSeriesRenderer mRefender=getRefender();
chartView=ChartFactory.getLineChartView(this, mDataSet, mRefender);
chart.addView(chartView);
}
private XYMultipleSeriesDataset getDataSet() {
XYMultipleSeriesDataset seriesDataset=new XYMultipleSeriesDataset();
XYSeries xySeries1=new XYSeries("北京最近7天最高温度变化趋势");
xySeries1.add(, );
xySeries1.add(, );
xySeries1.add(, );
xySeries1.add(, );
xySeries1.add(, );
xySeries1.add(, );
xySeries1.add(, );
seriesDataset.addSeries(xySeries1); XYSeries xySeries2=new XYSeries("北京最近7天最低温度变化趋势");
xySeries2.add(, );
xySeries2.add(, );
xySeries2.add(, );
xySeries2.add(, );
xySeries2.add(, );
xySeries2.add(, );
xySeries2.add(, );
seriesDataset.addSeries(xySeries2); return seriesDataset;
}
private XYMultipleSeriesRenderer getRefender() {
/*描绘器,设置图表整体效果,比如x,y轴效果,缩放比例,颜色设置*/
XYMultipleSeriesRenderer seriesRenderer=new XYMultipleSeriesRenderer(); seriesRenderer.setChartTitleTextSize();//设置图表标题的字体大小(图的最上面文字)
seriesRenderer.setMargins(new int[] { , , , });//设置外边距,顺序为:上左下右
//坐标轴设置
seriesRenderer.setAxisTitleTextSize();//设置坐标轴标题字体的大小
seriesRenderer.setYAxisMin(-);//设置y轴的起始值
seriesRenderer.setYAxisMax();//设置y轴的最大值
seriesRenderer.setXAxisMin(0.5);//设置x轴起始值
seriesRenderer.setXAxisMax(7.5);//设置x轴最大值
seriesRenderer.setXTitle("日期");//设置x轴标题
seriesRenderer.setYTitle("温度");//设置y轴标题
//颜色设置
seriesRenderer.setApplyBackgroundColor(true);//是应用设置的背景颜色
seriesRenderer.setLabelsColor(0xFF85848D);//设置标签颜色
seriesRenderer.setBackgroundColor(Color.argb(, , , ));//设置图表的背景颜色
//缩放设置
seriesRenderer.setZoomButtonsVisible(false);//设置缩放按钮是否可见
seriesRenderer.setZoomEnabled(false); //图表是否可以缩放设置
seriesRenderer.setZoomInLimitX();
// seriesRenderer.setZoomRate(1);//缩放比例设置
//图表移动设置
seriesRenderer.setPanEnabled(false);//图表是否可以移动 //legend(最下面的文字说明)设置
// seriesRenderer.setShowLegend(true);//控制legend(说明文字 )是否显示
// seriesRenderer.setLegendHeight(80);//设置说明的高度,单位px
// seriesRenderer.setLegendTextSize(16);//设置说明字体大小
//坐标轴标签设置
seriesRenderer.setLabelsTextSize();//设置标签字体大小
seriesRenderer.setXLabelsAlign(Align.CENTER);
seriesRenderer.setYLabelsAlign(Align.LEFT);
seriesRenderer.setXLabels();//显示的x轴标签的个数
seriesRenderer.addXTextLabel(, "6/24");//针对特定的x轴值增加文本标签
seriesRenderer.addXTextLabel(, "6/25");
seriesRenderer.addXTextLabel(, "6/26");
seriesRenderer.addXTextLabel(, "6/27");
seriesRenderer.addXTextLabel(, "6/28");
seriesRenderer.addXTextLabel(, "6/29");
seriesRenderer.addXTextLabel(, "今天");
seriesRenderer.setPointSize();//设置坐标点大小 seriesRenderer.setMarginsColor(Color.WHITE);//设置外边距空间的颜色
seriesRenderer.setClickEnabled(false);
seriesRenderer.setChartTitle("北京最近7天温度变化趋势图"); /*某一组数据的描绘器,描绘该组数据的个性化显示效果,主要是字体跟颜色的效果*/
XYSeriesRenderer xySeriesRenderer1=new XYSeriesRenderer();
xySeriesRenderer1.setAnnotationsColor(0xFFFF0000);//设置注释(注释可以着重标注某一坐标)的颜色
xySeriesRenderer1.setAnnotationsTextAlign(Align.CENTER);//设置注释的位置
xySeriesRenderer1.setAnnotationsTextSize();//设置注释文字的大小
xySeriesRenderer1.setPointStyle(PointStyle.CIRCLE);//坐标点的显示风格
xySeriesRenderer1.setPointStrokeWidth();//坐标点的大小
xySeriesRenderer1.setColor(0xFFF46C48);//表示该组数据的图或线的颜色
xySeriesRenderer1.setDisplayChartValues(false);//设置是否显示坐标点的y轴坐标值
xySeriesRenderer1.setChartValuesTextSize();//设置显示的坐标点值的字体大小 /*某一组数据的描绘器,描绘该组数据的个性化显示效果,主要是字体跟颜色的效果*/
XYSeriesRenderer xySeriesRenderer2=new XYSeriesRenderer();
xySeriesRenderer2.setPointStyle(PointStyle.CIRCLE);//坐标点的显示风格
xySeriesRenderer2.setPointStrokeWidth();//坐标点的大小
xySeriesRenderer2.setColor(0xFF00C8FF);//表示该组数据的图或线的颜色
xySeriesRenderer2.setDisplayChartValues(false);//设置是否显示坐标点的y轴坐标值
xySeriesRenderer2.setChartValuesTextSize();//设置显示的坐标点值的字体大小 seriesRenderer.addSeriesRenderer(xySeriesRenderer1);
seriesRenderer.addSeriesRenderer(xySeriesRenderer2);
return seriesRenderer;
}
}
遇到的问题:
1.图表中显示文字(图表标题,XY轴标签,说明文字)的大小单位是像素,会导致在高像素密度的设备上显示的字体非常小,在低像素密度的设备上显示字体偏大的情况,这个问题目前还不知道怎么解决。
2.还有就是已经设置了禁止缩放:
seriesRenderer.setZoomEnabled(false);
但是实际运行的效果是通过双指进行操作竟然能够缩放。
补充:
把某个坐标点标注出来,比如说把最高气温(1,36)这个坐标着重标注出来。
XYSeries seriesAt = mDataSet.getSeriesAt();//mDataSet为数据设置器XYMultipleSeriesDataset
seriesAt.addAnnotation("最高", , );
效果如下(xiaomi3截屏):

AChartEngine折线图实例的更多相关文章
- JFreeChart绘制折线图实例
JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库.只要下载JFreeChart的类库,导入项目即可使用.下面是一个绘制折线图的实例.各处注释都已经写的比较清晰了. package c ...
- python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)
最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...
- 最牛逼android上的图表库MpChart(二) 折线图
最牛逼android上的图表库MpChart二 折线图 MpChart折线图介绍 MpChart折线图实例 MpChart效果 最牛逼android上的图表库MpChart(二) 折线图 最近工作中, ...
- Android图表引擎AChartEngine之折线图使用
最近在帮老师做一个课题,其中app端需要显示折线图以便直观地看数据波动,上网查了些资料后发现了这款图标引擎,另外感谢李坤老师的博客,帮助很大. 废话不多说,下面写代码. 一.AChartEngine是 ...
- achartengine画出动态折线图
achartengine画出动态折线图的效果最近有个项目需要用到实时曲线图,我也上网搜索了一下,最后还是选择使用achartengine这个现成的东西,毕竟自己再canvas一下实在是太麻烦,而且项目 ...
- AChartEngine 安卓折线图 柱形图等利器
http://www.eoeandroid.com/thread-548233-1-6.html 最近公司项目中要用到折线图,状态类型的图标要用到折线图,柱形图等,并且能够动态显示,在网上找了许多de ...
- 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图
折线图: package org.achartengine.chartdemo.demo.chart; import java.util.ArrayList; import java.util.Lis ...
- Android AChartEngine 去除折线图黑边
通常使用AChartEngine画出的折线图,如果背景不是黑色,则会在折线图的坐标轴旁边出现黑边,如图所示: 试了好多设置,最后终于发现,去除黑边的设置是: mRenderer.setMarginsC ...
- 使用achartengine实现自定义折线图 ----附代码 调试OK
achartengine作为android开发中最常用的实现图标的开源框架,使用比较方便,参考官方文档谢了如下Demo,实现了自定义折线图. package edu.ustb.chart; impor ...
随机推荐
- IT兄弟连 HTML5教程 HTML语言的语法 1
HTML是文本类型的语言,和其他任何一门语言相比,语法都是最简单的.但在编写HTML文件时,必须遵循HTML的语法规则.一个完整的HTML文件由标题.段落.列表.表格.文本,即嵌入的各种对象所组成,这 ...
- IT兄弟连 Java语法教程 数组 多维数组 二维数组的初始化
二维数组的初始化与一位数组初始化类似,同样可以使用静态初始化或动态初始化. 1)静态初始化 静态初始化的格式如下: 数组名字 = new 数组元素的类型[][]{new 数组元素的类型[]{元素1,元 ...
- 【shell脚本】点名器===randomName.sh
随机点名,从name.txt文件中读取名字 [root@VM_0_10_centos shellScript]# cat randowName.sh #!/bin/bash # 随机点名器 # 需提前 ...
- 【Linux命令】ldconfig动态链接库管理命令
ldconfig动态链接库管理命令,其目的为了让动态链接库为系统所共享. 作用: 默认搜寻/lilb和/usr/lib,以及配置文件/etc/ld.so.conf内所列的目录下的库文件. 搜索出可共享 ...
- 08-蓝图&单元测试
学习目标 能够使用代码实现蓝图对项目进行模块化 能够说出断言的作用 能够说出实现单元测试步骤 能够说出单元测试所执行方法的定义规则 Blueprint(蓝图) 随着flask程序越来越复杂,我们需要对 ...
- mongodb简单监控
一.mongodb提供了自己的监控工具 mongostat mongostat是mongodb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取mongodb的当前运行状态,并输出.如果你发现数 ...
- RPA 可以给医疗行业带来哪些好处
如今,医疗保健行业通过利用颠覆性科学技术,使护理服务更加高效.医疗保健行业已经转向数字化,很多大型医疗机构开始采用 RPA(机器人流程自动化),使医疗服务的竞争力不断攀升.使用 RPA 可以完美自动化 ...
- Go template高级用法、深入详解、手册、指南、剖析
入门示例 以下为test.html文件的内容,里面使用了一个template语法{{.}}. <!DOCTYPE html> <html> <head> <m ...
- ASP.NET MVC IOC依赖注入之Autofac系列开篇
Autofac为IOC组件,实现控制反转,主要结合面向接口编程,完成较大程度的解耦工作. 使用IOC,必须面向接口编程,所谓的面向接口编程,即程序中依赖于抽象,而不依赖于具体实现. 需要所有的业务逻辑 ...
- 解决sublime快捷键回车换行问题
鼠标右键sublime 以管理员身份运行 打开首选项里面的按键绑定用户 将下面的代码粘贴复制 { "keys": ["enter"], "comman ...