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的说明文档,曾柯老师极大地简化了一 ...
随机推荐
- 小学生绞尽脑汁也学不会的python(反射)
小学生绞尽脑汁也学不会的python(反射) 1. issubclass, type, isinstance issubclass 判断xxxx类是否是xxxx类的子类 type 给出xxx的数据类型 ...
- [转]Python常用字符串
转自:http://blog.csdn.net/daemonpei/article/details/6325762 字符串相关操作: + :string1+string2 #联接字符串,将后一个串链接 ...
- IE6 浏览器常见兼容问题 共23个
1.<!DOCTYPE HTML>文档类型的声明. 产生条件:IE6浏览器,当我们没有书写这个文档声明的时候,会触发IE6浏览器的怪异解析现象: 解决办法:书写文档声明. 2.不同浏览器当 ...
- jquery访问ashx文件示例
转自原文jquery访问ashx文件示例 .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件 ...
- maven 构建web项目
Maven规定,必须创建以下几个Source Folder src/main/resources src/main/Java src/test/resources src/test/java 添加以上 ...
- 今天修了一个bug,关于debug日志的问题
是别人的代码,很诡异. 就是开了debug日志,没问题. 关了debug日志,就出问题. 开始我以为是debug日志拖慢了速度,所以有一些竞态环境的影响. 后来发现是在debug日志里面有一些side ...
- HDU 3625
有点置换群的味道. 当撞开一个门后,能打开一连串的门,即是可以排成一个圈.求的是种数,于是,可以使用第一类斯特林数,求出撞了0~K次的种数. 但是,注意,当第一个门为独自一个圈时,是不可行的,因为这代 ...
- 菜鸟学Struts——I18N对国际化的支持
大家肯定都喜欢玩游戏吧. 对于是一个游戏迷的话,肯定玩过不少很棒的经典单机游戏.比方说,国产的<古墓丽影>.<刺客信条>.<鬼泣>国产的仙剑.古剑等.在众多游戏系列 ...
- Ruby中写换行
Ruby中写换行 print("Hello,\nRuby\n!\n") print("Hello, Ruby ! ") 这两个竟然是一样的:就是说,可以直接回车 ...
- 高速排序算法C++实现
//quick sort //STL中也有现成的高速排序算法.内部实现採用了下面技巧 //1)枢轴的选择採取三数取中的方式 //2)后半段採取循环的方式实现 //3)高速排序与插入排序结合 #incl ...