周日在柱形图上加了两个小功能,当中之中的一个是加上了期望线/分界线,功能非常小,但我个人非常喜欢这个功能(好像之前也没看到别的图表库原生支持这个。

)

主要是加上这些小小的横线后,能非常明显的区分出数据的层次。通过柱形与线的对照,能够一下就知道,眼下处于什么层次或阶级。

这样的功能在强调某个底线或分级时特别有感觉。比方。销售人员的销售底线。价格的红线等,在商业报表中表强调时应当非常实用。只是我在Demo中是举了个考试成绩的柱形图。

虽不那么商业化。但应当能够比較让人好理解这个线的意义所在。

图例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGNsMTY4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

附上XCL-Charts实现此图的代码:

  1. package com.demo.xclcharts.view;
  2.  
  3. import java.text.DecimalFormat;
  4. import java.util.LinkedList;
  5. import java.util.List;
  6.  
  7. import org.xclcharts.chart.BarChart;
  8. import org.xclcharts.chart.BarData;
  9. import org.xclcharts.chart.DesireLineData;
  10. import org.xclcharts.common.IFormatterDoubleCallBack;
  11. import org.xclcharts.common.IFormatterTextCallBack;
  12. import org.xclcharts.renderer.XEnum;
  13.  
  14. import android.content.Context;
  15. import android.graphics.Color;
  16.  
  17. public class BarChart03View extends GraphicalView {
  18.  
  19. //标签轴
  20. private List<String> chartLabels = new LinkedList<String>();
  21. private List<BarData> chartData = new LinkedList<BarData>();
  22. private List<DesireLineData> mDesireLineDataSet = new LinkedList<DesireLineData>();
  23.  
  24. public BarChart03View(Context context) {
  25. super(context);
  26. // TODO Auto-generated constructor stub
  27. chartLabels();
  28. chartDataSet();
  29. chartDesireLines();
  30. chartRender();
  31.  
  32. }
  33.  
  34. private void chartRender()
  35. {
  36. try {
  37.  
  38. BarChart chart = new BarChart();
  39. //图所占范围大小
  40. chart.setChartRange(0.0f, 0.0f, getScreenWidth(),getScreenHeight());
  41. chart.setCanvas(this.mCacheCanvas);
  42. if(chart.isVerticalScreen())
  43. {
  44. chart.setPadding(15, 20, 8, 10);
  45. }else{
  46. chart.setPadding(20, 20, 10, 8);
  47. }
  48.  
  49. //标题
  50. chart.setChartTitle("小小熊 - 期末考试成绩");
  51. chart.setChartSubTitle("(XCL-Charts Demo)");
  52. //数据源
  53. chart.setDataSource(chartData);
  54. chart.setLabels(chartLabels);
  55. chart.setDesireLines(mDesireLineDataSet);
  56.  
  57. //图例
  58. chart.getLegend().setLeftLegend("分数");
  59. chart.getLegend().setLowerLegend("科目");
  60.  
  61. //数据轴
  62. chart.getDataAxis().setAxisMax(100);
  63. chart.getDataAxis().setAxisMin(0);
  64. chart.getDataAxis().setAxisSteps(5);
  65. //指隔多少个轴刻度(即细刻度)后为主刻度
  66. chart.getDataAxis().setDetailModeSteps(4);
  67.  
  68. //背景网格
  69. chart.getPlotGrid().setHorizontalLinesVisible(true);
  70.  
  71. //横向显示柱形,如想看横向显示效果,可打开这两行的凝视就可以
  72. //chart.setChartDirection(XEnum.Direction.HORIZONTAL);
  73. //chart.getPlotGrid().setVerticalLinesVisible(true);
  74.  
  75. //定义数据轴标签显示格式
  76. chart.getDataAxis().setLabelFormatter(new IFormatterTextCallBack(){
  77.  
  78. @Override
  79. public String textFormatter(String value) {
  80. // TODO Auto-generated method stub
  81. Double tmp = Double.parseDouble(value);
  82. DecimalFormat df=new DecimalFormat("#0");
  83. String label = df.format(tmp).toString();
  84. return (label);
  85. }
  86.  
  87. });
  88.  
  89. //在柱形顶部显示值
  90. chart.getBar().setItemLabelsVisible(true);
  91. //设定格式
  92. chart.setItemLabelFormatter(new IFormatterDoubleCallBack() {
  93. @Override
  94. public String doubleFormatter(Double value) {
  95. // TODO Auto-generated method stub
  96. DecimalFormat df=new DecimalFormat("#0");
  97. String label = df.format(value).toString();
  98. return label;
  99. }});
  100.  
  101. //隐藏Key
  102. chart.setPlotKeyVisible(false);
  103. //绘制图
  104. chart.render();
  105. } catch (Exception e) {
  106. // TODO Auto-generated catch block
  107. e.printStackTrace();
  108. }
  109. }
  110. private void chartDataSet()
  111. {
  112. //标签相应的柱形数据集
  113. List<Double> dataSeriesA= new LinkedList<Double>();
  114. dataSeriesA.add(98d);
  115. dataSeriesA.add(100d);
  116. dataSeriesA.add(95d);
  117. dataSeriesA.add(100d);
  118. BarData BarDataA = new BarData("",dataSeriesA,(int)Color.rgb(53, 169, 239));
  119.  
  120. chartData.add(BarDataA);
  121. }
  122.  
  123. private void chartLabels()
  124. {
  125. chartLabels.add("语文");
  126. chartLabels.add("数学");
  127. chartLabels.add("英语");
  128. chartLabels.add("计算机");
  129. }
  130.  
  131. /**
  132. * 期望线/分界线
  133. */
  134. private void chartDesireLines()
  135. {
  136. mDesireLineDataSet.add(new DesireLineData("及格线",60d,(int)Color.RED,7));
  137. mDesireLineDataSet.add(new DesireLineData("优秀",90d,(int)Color.rgb(35, 172, 57),5));
  138. }
  139.  
  140. }

从代码中能够看出,与样例中其他的柱形图不同。在设置数据源时。我多设置了一个数据源:

  1. //数据源
  2. chart.setDataSource(chartData);
  3. chart.setLabels(chartLabels);
  4. chart.setDesireLines(mDesireLineDataSet);

即除了数据轴与标签轴的数据源以外,还设置了期望线的数据源。

而期望线由四个參数构成。

  1. mDesireLineDataSet.add(new DesireLineData("及格线",60d,(int)Color.RED,7));
  2. 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柱形图的期望线/分界线的更多相关文章

  1. silverlight chart 折线图 的线颜色如何修改???

    silverlight  chart 折线图 的线颜色如何修改??? 我做出来都是这些偏黄色,请问如何修改线的颜色,以及线的宽度?谢谢

  2. 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 ...

  3. 关于k Line Chart (k线图)

    K Line Chart python实现k线图的代码,之前找过matplotlib中文文档但是画k线图的finance方法已经弃用了.所以自己在网上搜寻一下加上改编,很好的实现出k线图, 代码如下: ...

  4. Echars详解

    简介 ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9 /1 ...

  5. XCL-Charts画一个图(CurveChart)

    情节线图与往常不同的是,它是一个比较特殊线位置计算.所以我得到一个单独的类.相同.只需要输入数据源的基类, 加,控制要添加的.你可以画出你自己主动设置按照预期的效果. 代码: //图基类 chart ...

  6. HighCharts使用总结

    1.常用属性 chart: type:areaspline(线面图).arearange(区间图) zoomType: 缩放类型(沿着'xy'轴缩放) alignTicks:设置坐标轴刻度对齐. 当有 ...

  7. 图表制作工具之ECharts

    简介 ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9/10 ...

  8. ExtJS组件的xtype属性列表

    ExtJS的应用界面是由很多小部件组合而成的,这些小部件被称作“组件(Component)”,所有组件都是Ext.Component的子类,Ext.Component提供了生命周期管理包括初始化.渲染 ...

  9. R语言学习笔记︱Echarts与R的可视化包——地区地图

    笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...

随机推荐

  1. 异常值(outlier)

    简介 在数据挖掘的过程中,我们可能会经常遇到一些偏离于预测趋势之外的数据,通常我们称之为异常值. 通常将这样的一些数据的出现归为误差.有很多情况会出现误差,具体的情况需要就对待: 传感器故障 -> ...

  2. Python 绘图与可视化 matplotlib(下)

    详细的参考链接:更详细的:https://www.cnblogs.com/zhizhan/p/5615947.html 图像.子图.坐标轴以及记号 Matplotlib中图像的意思是打开的整个画图窗口 ...

  3. 自备LocalDateTime工具类

    package cn.zytao.taosir.common.utils; import java.time.Instant; import java.time.LocalDate; import j ...

  4. springboot项目封装为docker镜像

    1.本次镜像的基础镜像是:https://www.cnblogs.com/JoeyWong/p/9173265.html 2.将打包好的项目文件放在与Dockerfile同级的目录下 3.Docker ...

  5. eclipse引入svn插件,并将项目同步到svn

    1. eclipse中不存在SVN问题的解决 1.1发现Team->Share project 下没有svn. 1.2下载安装svn插件. 选择help->Eclipse Marketpl ...

  6. 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 ...

  7. 五大最佳开源java性能监控工具

    如果你正在寻找性能监控工具,不妨看看以下推荐的这五款开源工具,这些工具目前已经可以替代付费工具了,你可以看看是否是你的最佳选择.本文推荐的五款开源工具目前是开源社区中最受欢迎的. 1. Stagemo ...

  8. cogs 2056. 无平方因子数

    2056. 无平方因子数 ★☆   输入文件:non.in   输出文件:non.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 给出正整数n,m,区间[n,m]内的无 ...

  9. spring boot基础

    1.ANT下面典型的项目层次结构.(1) src存放文件.(2) class存放编译后的文件.(3) lib存放第三方JAR包.(4) dist存放打包,发布以后的代码. 2.Source Folde ...

  10. node09---中间件

    如果我的的get.post回调函数中,没有next参数,那么就匹配上第一个路由,就不会往下匹配了. 如果想往下匹配的话,那么需要写next() 1app.get("/",funct ...