XCL-Charts图表库简要介绍及常见问题

这个Andriod图表库项目从开始至现在,热情消耗几近殆尽。还好已基本实现我想做的那些东西。趁还剩下点兴趣,把一些点非常简单的归纳一下。

所支持的图表类型:

基类                            图表名称

BarChart                横/竖向柱形图及背向式柱形图

BarChart3D           横/竖向3D柱形图

StackBarChart      横/竖向堆叠式柱形图

RangeBarChart    范围柱形图

LineChart        折线图

SplineChart      曲线图

AreaChart         区域图(折线/平滑)

PieChart           饼图

PieChart3D     3D饼图

DountChart      环形图

ArcLineChart   弧线比较图

RoseChart       南丁格尔玫瑰图/玫瑰风向图

FunnelChart    漏斗图

CircleChart      圆/半圆图

BubbleChart    气泡图

RadarChart     雷达图

GaugeChart    刻度盘

ScatterChart    散点图

DialChart         仪表盘

 主要组成(附注:很多命名都是我自己乱命名的,专业的不用太较真,能实现效果就好。)

图表范围:

即图中蓝色渐变背景所在的范围。

设置函数:

setChartRange(float width, float height)

setChartRange(float startX, float startY, float width, float height)

绘图区:

图中黄色部分的范围。

可用下面函数设置绘图区与整个图表范围的缩收间距:

setPadding(float left, float top, float right, float bottom)

getPlotArea()

如数据量太多,屏幕显示不下时,可通过getPlotArea().extWidth()来扩大范围,通过手势滑动来查看。

标题栏:

分主标题与子标题

部份函数:

setTitle(java.lang.String title)

addSubtitle(java.lang.String subtitle)

坐标轴:

轴分两种数据轴与分类轴,轴可以显示在上下左右位置,或依数据值显示在任意位置。

引用函数:

getDataAxis()

getCategoryAxis()

轴标题:

可设置上下底部三个部份的标题

引用函数:

getAxisTitle()

图例:

可设置成行或列模式,并显示在图表中任意位置。

部份函数:

getPlotLegend()

动态图例:

可以做各种图表说明的补充。

引用函数:

getDyLegend()

定制线

用于做各种标示或分界线。

设置函数:

setCustomLines()

图批注

用于在显示时,在图表指定元素上特别标识时使用。

设置函数:

setAnchorDataPoint()

焦点框

在点击选中时,标识出当前选中项。

激活函数:

showClikedFocus();

焦点线(动态线):

用于在点击时显示相关的十字线等其它标识线。

showDyLine() 激活。

getDyLine()   获取相关对象。

图表缩放:

disableScale()  禁用

enabledScale() 启用

手势滑动

disablePanMode() 禁用

enabledPanMode() 启用

setPlotPanMode() 设置滑动模式(上下/左右/任意方向)

常见问题:

1.  没找到设置颜色的函数.

找到相关子类的画笔,自行设置颜色即可。

如设置轴线的颜色:

chart.getDataAxis().getAxisPaint().setColor(Color.BLUE);

2. 字体大小没有随着屏幕大小变化

自行依屏幕大小设置相关子类画笔的字体大小即可.

如,设置图表主标题字体大小:

chart.getPlotTitle().getTitlePaint().setTextSize(22);

3. 隐藏轴线或轴上的刻度/标签

以数据轴为例:

chart.getDataAxis().hideAxisLine();

chart.getDataAxis().hideTickMarks();

chart.getDataAxis().hideAxisLabels();

分类轴同理.

4. 如何设置轴或图表对象上的显示格式:

图库有提供相关回调函数,自行实现即可.

一个简单的例子代码:

//定义数据轴标签显示格式
			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);
				}

			});

其它依此类推。

5. 如果从Activity向view中的图传值,刷新

一个简单的同时刷新两个曲线图的例子:

Activity:
   chartView.refreshChart(linePoint1, linePoint2);
View:
   public void refreshChart( List<PointD> linePoint1,
							 List<PointD> linePoint2){

		dataSeries1.setLineDataSet(linePoint1);
		dataSeries2.setLineDataSet(linePoint2);
		this.invalidate();
	}

6. 双Y轴怎么处理

多图叠加即可。参考下Demo中的混合图例子。

7. 需要柱形图与折线图合在一起显示

多图叠加即可。参考下Demo中的混合图例子。

8. 需要特别标识某一个点或值

使用图批注即可。

9. 需要显示这种或那种动画效果

可参考Demo中一些例子的动画,如渐显,由远及近等来自己实现,也可调用第三方库来做。

10. 能否设置柱形宽度

柱形大小是依绘图区宽度及柱形个数自动设置的,不能显式指定。

11. 图表移出绘图区范围不见了。

目前是任意移动,可使用hscrollview来做。可参考相关例子

12. 数据量很大,滑动时速度慢

如不需点击和缩放效果,可使用hscrollview来做,否则可使用disableHighPrecision()来提高性能。

但这个函数饼图类图表慎用。

13. 怎么在Activity中,得到图表的点击对象和相关值

可参考Demo,有相关演示。

14. 温度计轴/不等距轴怎么做?

XCL-Charts目前不支持,但幸好大S共享了一个经典实现,在网友图表库目录下。

15. 区域图有没渐变效果。

有,可指定渐变起始和结束色,从上到下或从左至右渐变。

16. 图例要显示在下方或左右。

有相关函数,直接设置即可。Demo中有相关例子。

17. 有个轴要显示在顶部

有相关属性,直接设置即可。Demo中有相关例子。

18. 折线图左右滑动的例子

两个View,一个view用于显示Y轴,图标题,图例,另一个用于显示scrollview及图表。

19. Y轴标题显示在顶部,X轴标题显示在右下

两种方式,要么参考Demo中“竖向定制线柱形图"例子的做法。

要么在view的render()中,通过 chart.getPlotArea().getLeft()及chart.getPlotArea().getTop()等函数得到相关坐标,

直接drawText即可。

20. 点击时选中不够灵敏,怎么办?

利用extPointClickRange(10); 扩大选中范围即可。

21.手势移动时,轴标签已移出绘图区范围了仍显示。

有提供相关函数来控制,移出后的显示范围,以X方向为例:

//平移时收缩下

float margin = DensityUtil.dip2px(getContext(), 20);

chart.setXTickMarksOffsetMargin(margin);

Y方向依上例类推。

22. 饼图标签折线从扇区边上起始延伸出来。

直接设置折线线起始点即可。chart.getLabelBrokenLine().setBrokenStartPoint(10f); 值为0-10的比例。

23. 饼图标签和线与扇区要相同颜色.

chart.syncLabelLineColor()即可。

24. 饼图数据传进去有空隙或不显示?

Java的float和double类型在计算时会有误差。造成圆心角合计小于或超出360度。

建议调用库中的Mathhelper类中的相关函数来做计算处理。

25. 饼图标签太密,看不清。

太密集的标签不重叠的处理算法还没兴趣去研究, 但库已提供了5,6种标签显示风格。建议不同扇区依角大小错开,

并不同扇区指定不同标签显示风格来处理。

26.我需要多图同步,并定时刷新数据。

Demo中有,可参考双线图的例子。

27. 从哪可以下载源码

https://github.com/xcltapestry/XCL-Charts

28. 下载后怎么这么多叉。

重新导入一下 xclcharts.jar即可。

29.怎么有两个工程。

xcl-charts是生成jar的工程

xcl-charts-demo 是用来演示的工程。

30 怎么在xml中放图表,在ChartsActivity中全是代码生成的。

亲,还有其它很多例子是将view放在xml中的。别老盯着ChartsActivity一个。

31.怎么一下占这么多内存。

为了方面挂演示例子,仅ChartsActivity就一次生成了40多个view。你单挑试试,虽然因为定制性强,所以选项多,

但哥们当初也用了不少优化内存手段的。

32.细类好多。

嗯,因为我野心比较大,封装好零件,以后无任想加什么图,只需关注图本身的实现逻辑即可。

哥搭的是一套Android绘图的基础平台,而不是仅仅只画的某一类图。

再说一句,用Java写代码就啰嗦,我现在很喜欢Golang。

33.我写的代码比你好。

我是个写C/C++的跨界Oracle DBA.  对于Java是现学现用,你不能对我要求太高.....

欢迎提优化意见。

34. 怎么issues到现在才4个。

可能我代码确实写得好。

可能大家都很忙。

可能大家照顾我脸面。

可能从没人用过这个库。

..............

35.群主,库的设计思想是什么?

不知道怎么回答。 我只想到几个,图效果要炫,定制性要高,调用要灵活,对复杂图能通过图组合叠加来实现。

所有零部件都要封装好,这样我以后加图方便。

36.这库为啥没火?

首先想到了这几个可能原因: 几近单枪匹马 + 国人的妄自菲薄 + 大家都很忙 +  ......

然后想,这些都是P啊。不忘初心知道不。

37.这库的文档在哪?

doc目录下有Java Doc可查函数和相关api。其它直接看Demo吧,目前有40几个例子,你以为我真很闲?

38. 群主,请教一个aChartEngine问题

抱歉,不会也没使用过aChartEngine。曾浏览过源码,非常经典,但未曾看懂过。

39. 帮看看MPAndroidChart的问题

抱歉,没研究过,但看过MPAndroidChart demo. 然后,我觉得我做得很多方面比这个更好。

至少图表调用和组合要更灵活,图表种类也更多。

40. 我只想抽取你的部份代码。

滚。

41. 你不是要收手吗?

是的,说过很多次收手了。

MAIL: [email protected]

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

时间: 2024-12-23 09:21:58

XCL-Charts图表库简要介绍及常见问题的相关文章

XCL-Charts图表库简要教程及常见问题

这个Andriod图表库项目从开始至现在,热情消耗几近殆尽.还好已基本实现我想做的那些东西.趁还剩下点兴趣,把一些点非常简单的归纳一下. 所支持的图表类型: 基类                            图表名称 BarChart                横/竖向柱形图及背向式柱形图 BarChart3D           横/竖向3D柱形图 StackBarChart      横/竖向堆叠式柱形图 RangeBarChart    范围柱形图 LineChart    

Swift 很强大的图表库-Charts使用

前言: 今天分享一个很漂亮的功能强大的图表库,希望对有需要的同学, 有帮助, 喜欢请点个赞,支持一下.谢谢~ 在项目中如何加入Swift库请看我的上一篇文章 http://www.jianshu.com/p/fd91c10c9f55 编译环境: Xcode7.3 添加Charts图表库 // 在Podfile中 use_frameworks! pod 'Charts' import Charts 创建柱状图 func createLineChartView() { chartView = Bar

XCL-Charts图表库中柱形图的同源风格切换介绍

柱形图是被使用最多的图之中的一个,在写XCL-Charts这个Android图表库时,为它花费的时间相当多,不是由于有多难绘制,而是要在设计时怎样才干保证图基类能适应各种情况,能灵活满足足够多的需求,以及够简洁的接口,并要开放出足够多的绘制元素和參数供开发者定制,同一时候对各类柱形图独有的的特点要加以突出,再加上柱形图的选项本身相对于其他图来说也是相当多的,所以花了比較多的时间.结果嘛,至少我自己临时认为还算不错. 这里我仅仅简单给大家介绍XCL-Charts图表库中柱图一个比較有意思的特点:

ECharts(Enterprise Charts 商业产品图表库)初识

一.简介 大数据时代,重新定义图表的时候到了,所以随之ECharts就随之出现了. ECharts(Enterprise Charts 商业产品图表库) 是基于Canvas的,纯Javascript 的图表库,提供直观,生动,可交互,可个性化定制的 数据可视化图表.创新的拖拽重计算.数据视图.值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘.整合的能力.      ECharts 是指 Enterprise Charts(商业产品图表库),提供商业产品常用图表库,底层基于 ZRende

Android开源图表库介绍

XCL-Charts XCL-Charts V1.8     Android开源图表库(XCL-Charts is a free charting library for Android platform.)     XCL-Charts基于Android原生Canvas来绘制各种图表,使用简便,定制灵活.     目前支持3D/非3D柱形图(Bar Chart).3D/非3D饼图(Pie Chart).堆积图(Stacked Bar Chart).面积图(Area Chart). 折线图(Li

Android运行时ART简要介绍和学习计划

Android在4.4就已推出新运行时ART,准备替代用了有些时日的Dalvik.不过当时尚属测试版,主角仍是Dalvik. 直到今年的Google I/O大会,ART才正式取代Dalvik.这个消息在科技界引起不小轰动,也吸引不少技术人员对它的"技术分析".可惜这些"技术分析"不过是引用了官方的数据和图表而已.这一系列文章将对ART进行真正的技术分析.老规矩,分析前先进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyang

Android图表库MPAndroidChart(一)——了解他的本质,方能得心应手

Android图表库MPAndroidChart(一)--了解他的本质,方能得心应手 我们项目中经常会遇到一些统计图,比如折线图,线形图等,在一些运动健康类的App中尤其的常见,这画起来要命,我以前就是自己手撸了这么多,但是撸完却并没有很深的感悟i,感觉,自己白撸了一样,懊恼,经常去搜索,Google也好,百度也罢,都是些标题党,什么最简单的,一招怎么怎么的,我看了半天愣是连文笔的逻辑的没看明白,主要还是排版实在是感人,本来以为现在转站系统之后接触的,应该是一大堆源码和终端,谁知道又临时调到Ap

Android图表库MPAndroidChart(四)——条形图的绘制过程过程,隐隐约约我看到了套路

Android图表库MPAndroidChart(四)--条形图的绘制过程过程,隐隐约约我看到了套路 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库MPAndroidChart(一)--了解他的本质,方能得心应手 Android图表库MPAndroidChart(二)--线形图的方方面面,看完你会回来感谢我的 Android图表库MPAndroidChart(三)--双重轴线形图的实现,这次就so easy了 Android图表库MPAndro

JavaScript chart--15款JavaScript制图表库

译文来源:http://www.sitepoint.com/15-best-javascript-charting-libraries/ 我们无法想像一个没有图表的Dashboard会是什么样.图表可以对数据进行直观有效的展示.不仅如此,图表的巧妙应用还可以提升网站的整体视觉效果. 本文将介绍一些非常好用的制作图表的JavaScript库.这些库能够帮助你完成你未来项目中的漂亮的.可定制化的图和表. 文中介绍的库大多是免费的,当然也有一些库会提供功能更加强大的付费版. 1. D3.js —— 数