XCL-Chart柱形图的期望线/分界线
周日在柱形图上加了两个小功能,当中之中的一个是加上了期望线/分界线,功能非常小,但我个人非常喜欢这个功能(好像之前也没看到别的图表库原生支持这个。
)
主要是加上这些小小的横线后,能非常明显的区分出数据的层次。通过柱形与线的对照,能够一下就知道,眼下处于什么层次或阶级。
这样的功能在强调某个底线或分级时特别有感觉。比方。销售人员的销售底线。价格的红线等,在商业报表中表强调时应当非常实用。只是我在Demo中是举了个考试成绩的柱形图。
虽不那么商业化。但应当能够比較让人好理解这个线的意义所在。
图例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGNsMTY4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
附上XCL-Charts实现此图的代码:
package com.demo.xclcharts.view; import java.text.DecimalFormat;
import java.util.LinkedList;
import java.util.List; import org.xclcharts.chart.BarChart;
import org.xclcharts.chart.BarData;
import org.xclcharts.chart.DesireLineData;
import org.xclcharts.common.IFormatterDoubleCallBack;
import org.xclcharts.common.IFormatterTextCallBack;
import org.xclcharts.renderer.XEnum; import android.content.Context;
import android.graphics.Color; public class BarChart03View extends GraphicalView { //标签轴
private List<String> chartLabels = new LinkedList<String>();
private List<BarData> chartData = new LinkedList<BarData>();
private List<DesireLineData> mDesireLineDataSet = new LinkedList<DesireLineData>(); public BarChart03View(Context context) {
super(context);
// TODO Auto-generated constructor stub
chartLabels();
chartDataSet();
chartDesireLines();
chartRender(); } private void chartRender()
{
try { BarChart chart = new BarChart();
//图所占范围大小
chart.setChartRange(0.0f, 0.0f, getScreenWidth(),getScreenHeight());
chart.setCanvas(this.mCacheCanvas);
if(chart.isVerticalScreen())
{
chart.setPadding(15, 20, 8, 10);
}else{
chart.setPadding(20, 20, 10, 8);
} //标题
chart.setChartTitle("小小熊 - 期末考试成绩");
chart.setChartSubTitle("(XCL-Charts Demo)");
//数据源
chart.setDataSource(chartData);
chart.setLabels(chartLabels);
chart.setDesireLines(mDesireLineDataSet); //图例
chart.getLegend().setLeftLegend("分数");
chart.getLegend().setLowerLegend("科目"); //数据轴
chart.getDataAxis().setAxisMax(100);
chart.getDataAxis().setAxisMin(0);
chart.getDataAxis().setAxisSteps(5);
//指隔多少个轴刻度(即细刻度)后为主刻度
chart.getDataAxis().setDetailModeSteps(4); //背景网格
chart.getPlotGrid().setHorizontalLinesVisible(true); //横向显示柱形,如想看横向显示效果,可打开这两行的凝视就可以
//chart.setChartDirection(XEnum.Direction.HORIZONTAL);
//chart.getPlotGrid().setVerticalLinesVisible(true); //定义数据轴标签显示格式
chart.getDataAxis().setLabelFormatter(new IFormatterTextCallBack(){ @Override
public String textFormatter(String value) {
// TODO Auto-generated method stub
Double tmp = Double.parseDouble(value);
DecimalFormat df=new DecimalFormat("#0");
String label = df.format(tmp).toString();
return (label);
} }); //在柱形顶部显示值
chart.getBar().setItemLabelsVisible(true);
//设定格式
chart.setItemLabelFormatter(new IFormatterDoubleCallBack() {
@Override
public String doubleFormatter(Double value) {
// TODO Auto-generated method stub
DecimalFormat df=new DecimalFormat("#0");
String label = df.format(value).toString();
return label;
}}); //隐藏Key
chart.setPlotKeyVisible(false);
//绘制图
chart.render();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void chartDataSet()
{
//标签相应的柱形数据集
List<Double> dataSeriesA= new LinkedList<Double>();
dataSeriesA.add(98d);
dataSeriesA.add(100d);
dataSeriesA.add(95d);
dataSeriesA.add(100d);
BarData BarDataA = new BarData("",dataSeriesA,(int)Color.rgb(53, 169, 239)); chartData.add(BarDataA);
} private void chartLabels()
{
chartLabels.add("语文");
chartLabels.add("数学");
chartLabels.add("英语");
chartLabels.add("计算机");
} /**
* 期望线/分界线
*/
private void chartDesireLines()
{
mDesireLineDataSet.add(new DesireLineData("及格线",60d,(int)Color.RED,7));
mDesireLineDataSet.add(new DesireLineData("优秀",90d,(int)Color.rgb(35, 172, 57),5));
} }
从代码中能够看出,与样例中其他的柱形图不同。在设置数据源时。我多设置了一个数据源:
//数据源
chart.setDataSource(chartData);
chart.setLabels(chartLabels);
chart.setDesireLines(mDesireLineDataSet);
即除了数据轴与标签轴的数据源以外,还设置了期望线的数据源。
而期望线由四个參数构成。
mDesireLineDataSet.add(new DesireLineData("及格线",60d,(int)Color.RED,7));
mDesireLineDataSet.add(new DesireLineData("优秀",90d,(int)Color.rgb(35, 172, 57),5));
标签 : 用于标识线的意义,为""则不显示
值 :用来与数据轴的值进行对照,来确认显示位置
颜色
:线的颜色
线的粗细:能够在特别强调时。与颜色配合来让人醒目。
这仅仅是每条线各自的属性,实现上,通过"chart.getDesireLinePaint()",能够得到线的画笔类。在上面设置透明度等等效果。
关注的能够试一下这个小功能。
XCL-Charts地址在"写的Android图表库XCL-Charts,整理好如今开源了!!!"中有写.
MAIL: xcl_168@aliyun.com
BLOG:http://blog.csdn.net/xcl168
XCL-Chart柱形图的期望线/分界线的更多相关文章
- silverlight chart 折线图 的线颜色如何修改???
silverlight chart 折线图 的线颜色如何修改??? 我做出来都是这些偏黄色,请问如何修改线的颜色,以及线的宽度?谢谢
- R画柱形图和箱线图
数据格式如下 gene_id Sham-1 Sham-2 Sham-3 Sham-4 Sham-5 Rep-1h-1 Rep-1h-2 Rep-1h-3 Rep-1h-4 Rep-1h-5 Rep-3 ...
- 关于k Line Chart (k线图)
K Line Chart python实现k线图的代码,之前找过matplotlib中文文档但是画k线图的finance方法已经弃用了.所以自己在网上搜寻一下加上改编,很好的实现出k线图, 代码如下: ...
- Echars详解
简介 ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9 /1 ...
- XCL-Charts画一个图(CurveChart)
情节线图与往常不同的是,它是一个比较特殊线位置计算.所以我得到一个单独的类.相同.只需要输入数据源的基类, 加,控制要添加的.你可以画出你自己主动设置按照预期的效果. 代码: //图基类 chart ...
- HighCharts使用总结
1.常用属性 chart: type:areaspline(线面图).arearange(区间图) zoomType: 缩放类型(沿着'xy'轴缩放) alignTicks:设置坐标轴刻度对齐. 当有 ...
- 图表制作工具之ECharts
简介 ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9/10 ...
- ExtJS组件的xtype属性列表
ExtJS的应用界面是由很多小部件组合而成的,这些小部件被称作“组件(Component)”,所有组件都是Ext.Component的子类,Ext.Component提供了生命周期管理包括初始化.渲染 ...
- R语言学习笔记︱Echarts与R的可视化包——地区地图
笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...
随机推荐
- C语言实现将一个整形数转换为两个字节16进制
有时候要用到这个转换,这里记录一下,例如把 int a = 164 转换储存在数组里为 uint8_t b[0]=0x00 , b[1]=0xA4 . 很简单,转换如下: b[0] = a > ...
- GitHub上搭建私人hexo博客操作教程
GitHub上搭建hexo博客 安装GitGit:主要用于上传博客页面到github和命令操作安装NodeNode.js:Hexo的运行环境安装HexoHexo:博客程序打开安装Git后的生成的右键菜 ...
- 2015 Multi-University Training Contest 8 hdu 5389 Zero Escape
Zero Escape Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- HDU 1350 Taxi Cab Scheme
Taxi Cab Scheme Time Limit: 10000ms Memory Limit: 32768KB This problem will be judged on HDU. Origin ...
- poj2528 Mayor's posters(线段树,离散化)
离散化的思想: 对于这样的数据 (3,10000). (9,1000000). (5.100000), (1,1000). (7,1000000) 我们能够将其处理为 (2,7). (5,9). (3 ...
- AJAX入门---点滴的积累
AJAX入门---点滴的积累 每次学习完一个内容总会写上几句话总结一下学习的内容.这不刚看完王兴魁老师讲的AJAX核心技术.如今回想梳理一下. 这套视频的内容不多,简单的解说了XMLHttpReque ...
- Codeforces 703D Mishka and Interesting sum 离线+树状数组
链接 Codeforces 703D Mishka and Interesting sum 题意 求区间内数字出现次数为偶数的数的异或和 思路 区间内直接异或的话得到的是出现次数为奇数的异或和,要得到 ...
- vue组件样式添加scoped属性之后,无法被父组件修改。或者无法在本组件修改element UI样式
在vue开发中,需要使用scoped属性避免样式的全局干扰,但是这样在父组件中是无法被修改的,不仅如此如果项目中用了UI框架比如element Ui,这个时候在本组件也无法修改样式,因为权重问题.但是 ...
- Java多线程编程模式实战指南(三):Two-phase Termination模式--转载
本文由本人首次发布在infoq中文站上:http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-two-phase-t ...
- (转载)Android:学习AIDL,这一篇文章就够了(上)
前言 在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说——你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓——那样就很尴尬了.不过又转念一想, ...