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的说明文档,曾柯老师极大地简化了一 ...
随机推荐
- 异常值(outlier)
简介 在数据挖掘的过程中,我们可能会经常遇到一些偏离于预测趋势之外的数据,通常我们称之为异常值. 通常将这样的一些数据的出现归为误差.有很多情况会出现误差,具体的情况需要就对待: 传感器故障 -> ...
- Python 绘图与可视化 matplotlib(下)
详细的参考链接:更详细的:https://www.cnblogs.com/zhizhan/p/5615947.html 图像.子图.坐标轴以及记号 Matplotlib中图像的意思是打开的整个画图窗口 ...
- 自备LocalDateTime工具类
package cn.zytao.taosir.common.utils; import java.time.Instant; import java.time.LocalDate; import j ...
- springboot项目封装为docker镜像
1.本次镜像的基础镜像是:https://www.cnblogs.com/JoeyWong/p/9173265.html 2.将打包好的项目文件放在与Dockerfile同级的目录下 3.Docker ...
- eclipse引入svn插件,并将项目同步到svn
1. eclipse中不存在SVN问题的解决 1.1发现Team->Share project 下没有svn. 1.2下载安装svn插件. 选择help->Eclipse Marketpl ...
- 2015 Multi-University Training Contest 7 hdu 5375 Gray code
Gray code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- 五大最佳开源java性能监控工具
如果你正在寻找性能监控工具,不妨看看以下推荐的这五款开源工具,这些工具目前已经可以替代付费工具了,你可以看看是否是你的最佳选择.本文推荐的五款开源工具目前是开源社区中最受欢迎的. 1. Stagemo ...
- cogs 2056. 无平方因子数
2056. 无平方因子数 ★☆ 输入文件:non.in 输出文件:non.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 给出正整数n,m,区间[n,m]内的无 ...
- spring boot基础
1.ANT下面典型的项目层次结构.(1) src存放文件.(2) class存放编译后的文件.(3) lib存放第三方JAR包.(4) dist存放打包,发布以后的代码. 2.Source Folde ...
- node09---中间件
如果我的的get.post回调函数中,没有next参数,那么就匹配上第一个路由,就不会往下匹配了. 如果想往下匹配的话,那么需要写next() 1app.get("/",funct ...