XCL-Charts android 图表

 

[置顶] XCL-Charts图表库简要教程及常见问题

分类: XCL-Charts   486人阅读  评论(1)  收藏  举报

本文转自:http://blog.csdn.net/xcl168/article/details/42318669

       这个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. 如何设置轴或图表对象上的显示格式:

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

          一个简单的例子代码:           

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //定义数据轴标签显示格式  
  2.             chart.getDataAxis().setLabelFormatter(new IFormatterTextCallBack(){  
  3.       
  4.                 @Override  
  5.                 public String textFormatter(String value) {  
  6.                     // TODO Auto-generated method stub        
  7.                     Double tmp = Double.parseDouble(value);  
  8.                     DecimalFormat df=new DecimalFormat("#0");  
  9.                     String label = df.format(tmp).toString();                 
  10.                     return (label);  
  11.                 }  
  12.                   
  13.             });  
     其它依此类推。


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

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

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Activity:  
  2.    chartView.refreshChart(linePoint1, linePoint2);        
  3. View:  
  4.    public void refreshChart( List<PointD> linePoint1,  
  5.                              List<PointD> linePoint2){  
  6.           
  7.         dataSeries1.setLineDataSet(linePoint1);  
  8.         dataSeries2.setLineDataSet(linePoint2);  
  9.         this.invalidate();  
  10.     }  
         

  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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,有多种方法可以实现绘制折线图的功能。一种常用的方法是使用第三方库,如MPAndroidChart、XCL-chart、achartenginee和hellochart等。这些库提供了丰富的功能和易于使用的API,可以帮助开发者快速实现折线图的绘制。[2] 如果你想使用hellochart库来实现折线图,首先需要在布局文件中添加一个LineChartView组件。在activity_*.xml文件中,可以添加以下代码来创建LineChartView组件: ```xml <lecho.lib.hellocharts.view.LineChartView android:id="@id/line_chart" android:padding="30dp" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff"/> ``` 接下来,你需要在相应的Activity中创建自定义View,并在其中实现折线图的绘制逻辑。你可以参考hellochart库的文档和示例代码,了解如何使用该库来绘制折线图。[3] 另外,如果你对自定义View有一定的了解,也可以自己实现折线图的绘制逻辑。你可以通过绘制线条、绘制圆点和绘制阴影等操作来实现折线图的效果。在绘制之前,你可以先观察效果图,确定画布的底层背景、网格背景、折线和圆点的绘制顺序,以及阴影部分的绘制方式。然后,你可以在自定义View中重写onDraw方法,使用Canvas和Paint等类来实现折线图的绘制逻辑。[1] 总之,无论是使用第三方库还是自定义View,都可以实现在Android中绘制折线图的功能。选择合适的方法取决于你的需求和个人偏好。希望这些信息对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值