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 ...
随机推荐
- Django restful framework中自动生成API文档
自动生成api文档(不管是函数视图还是类视图都能显示) 1.安装rest_framework_swagger库 pip install django-rest-swagger 2.在项目下的 urls ...
- Ubuntu更新python3.5到python3.7
一 下载wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz 二 解压tar zxvf Python-3.7.1rc2.tg ...
- ubuntu18.04 中个性化配置vim方法
1:新建配置文件 在终端里输入:vi ~/.vimrc (vimrc是vim的配置文件,每次打开vim时会自动加载这个文件里的配置) 2:配置的代码如下:直接就可以复制到里面然后保存就行 set ai ...
- Python自动群发邮件,只需20行代码!
今日分享 Python自动群发邮件 import smtplib from email import (header) from email.mime import (text, applicatio ...
- js的事件循环(Event Loop)
(本文从掘金小册整理) 首先介绍一下几个概念 进程与线程 相信大家经常会听到 JS 是单线程执行的,但是你是否疑惑过什么是线程? 讲到线程,那么肯定也得说一下进程.本质上来说,两个名词都是 CPU 工 ...
- 【Linux命令】系统状态检测命令8个(ifconfig、uname、uptime、free、who、last、history、sosreport)
目录 ifconfig获取网卡配置信息 uname查看系统内核版本 uptime查看系统的负载信息 free查看内存信息 who查看当前主机用户的终端信息 last查看系统的登录记录 history查 ...
- 10-Django中间件
中间件 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入和输出. 中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Djang ...
- js的promise
转载自: https://segmentfault.com/a/1190000007032448#articleHeader16 一 前言 本文主要对ES6的Promise进行一些入门级的介绍.要想学 ...
- OpenGL光照2:材质和光照贴图
本文是个人学习记录,学习建议看教程 https://learnopengl-cn.github.io/ 非常感谢原作者JoeyDeVries和多为中文翻译者提供的优质教程 的内容为插入注释,可以先跳过 ...
- ABAP ALV显示前排序合并及布局显示
有时候会有用户要求显示出来的ALV立即就是升序或者降序,或者是上下同一个字段值一样的情况显示一次,如 变为 这个时候内表用SORT有时候会不好用,可以使用函数 REUSE_ALV_GRID_DISPL ...