XCL-Chart柱形图的期望线/分界线

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

主要是加上这些小小的横线后,能很明显的区分出数据的层次。通过柱形与线的对比,可以一下就知道,目前处于什么层次或阶级。

这种功能在强调某个底线或分级时特别有感觉。比如,销售人员的销售底线,价格的红线等,在商业报表中表强调时应当很有用,不过我在Demo中是举了个考试成绩的柱形图。虽不那么商业化,但应当可以比较让人好理解这个线的意义所在。

图如下:

附上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: [email protected]

BLOG:http://blog.csdn.net/xcl168

XCL-Chart柱形图的期望线/分界线

时间: 2024-10-31 01:11:57

XCL-Chart柱形图的期望线/分界线的相关文章

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

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

Echars详解

简介 ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9 /10/11,chrome,firefox,Safari等),底层依赖轻量级的Canvas类库ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表.创新的拖拽重计算.数据视图.值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘.整合的能力. 支持折线图(区域图).柱状图(条状

XCL-Charts画曲线图(CurveChart)

曲线图与通常的折线图不同的地方是它的线条位置计算有点特别,所以我独立弄了一个类.同样,只需传入数据源给基类, 再加上,你想加的控制,可自动依设置绘出你想要的效果. 代码: //图基类 chart = new CurveChart(); //图所占范围大小 chart.setChartRange(0, 0, this.mScrWidth , this.mScrHeight ); //标签轴标签集合 LinkedList<String> lables = new LinkedList<Str

图表制作工具之ECharts

简介 ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9/10/11,chrome,firefox,Safari等),底层依赖轻量级的Canvas类库ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表.创新的拖拽重计算.数据视图.值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘.整合的能力. 支持折线图(区域图).柱状图(条状图

XCL-Charts画一个图(CurveChart)

情节线图与往常不同的是,它是一个比较特殊线位置计算.所以我得到一个单独的类.相同.只需要输入数据源的基类, 加,控制要添加的.你可以画出你自己主动设置按照预期的效果. 代码: //图基类 chart = new CurveChart(); //图所占范围大小 chart.setChartRange(0, 0, this.mScrWidth , this.mScrHeight ); //标签轴标签集合 LinkedList<String> lables = new LinkedList<S

HighCharts使用总结

1.常用属性 chart: type:areaspline(线面图).arearange(区间图) zoomType: 缩放类型(沿着'xy'轴缩放) alignTicks:设置坐标轴刻度对齐. 当有多个坐标轴时,设置坐标轴刻度的对其方式(通过自动计算还是不需要计算). color: 'rgba(68, 170, 213, 0.1)' 颜色的透明色设置 style:CSS样式 设置文字颜色.字体.字号,但是字体的对齐则使用algin.x和y元素.比如: { "color": "

最牛WinRT用户界面控件Essential Studio for WinRT

Syncfusion发布了Essential Studio for WinRT ,为构建Windows Store应用程序提供企业级控件.它是用户界面开发控件中最为强大的工具包,包含40多个控件,其中包括可以读写Excel.Word和PDF文档的XlsIO.DocIO和PDF控件等独有的控件,这些都是其它产品没有的. 图表控件包含超过20种图表类型,如折线图.面积图.条形图.气泡图.柱形图.K线图.盘高-盘低图.盘高-盘低-开盘-收盘图.极坐标图.饼图.雷达图.范围面积图.范围柱状图.散点图.堆

Open Flash Chart 之线图

天公司要求开发一个曲线图,简单看了一下之前公司的一个系统,发现一个曲线图效果还不错,查了一下叫OpenFlashChart,还是很不错的,很多人用.研究了一下,发现还不错,特地写了个DEMO测试下. public ActionResult ITooltip() { int DateLen = Convert.ToInt32(Request["d"]); int DateMode = Convert.ToInt32(Request["m"]); OpenFlashCh

Open Flash Chart 之线图(二)

上一节在研究Open Flash Chart时,漏掉不少东西,只是简单的熟悉了一下后端的属性设置.今天再来补充一下. 一.显示Open Flash Chart图表 Open Flash Chart 前台配置: swfobject.embedSWF(flashPath, "chart", "100%", "100%", "9.0.0", "expressInstall.swf",{}, {},{id:'cus