当前位置:   article > 正文

Android MPAndroidChart --折线图_android 折线图

android 折线图

主要使用的三方为:MPAndroidChart

1.使用方法:引入依赖或者导入module

repositories {

maven { url "https://jitpack.io" }

}

implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'

2.在布局中定义

<com.github.mikephil.charting.charts.LineChart

android:id="@+id/lineChart"

android:layout_width="match_parent"

android:layout_height="400dp"

/>

3.折线图主要由六部分组成

  • 标题(Description)

  • 标记(marker)

  • 图例(Legend)

  • X轴(XAxis)

  • Y轴(YAxis)

  • 数据源(LineData)

4.最基础的使用方式

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  5. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  6. setContentView(R.layout.activity_linechart);
  7. lineChart = findViewById(R.id.lineChart);
  8. // 背景颜色
  9. lineChart.setBackgroundColor(Color.WHITE);
  10. // 禁用描述文本
  11. lineChart.getDescription().setEnabled(true);
  12. // 启用触摸手势
  13. lineChart.setTouchEnabled(true);
  14. // 设置监听器
  15. lineChart.setOnChartValueSelectedListener(this);
  16. lineChart.setDrawGridBackground(false);
  17. // 启用拖动
  18. lineChart.setDragEnabled(true);
  19. // 启用缩放
  20. lineChart.setScaleEnabled(true);
  21. // lineChart.setScaleXEnabled(true);
  22. // lineChart.setScaleYEnabled(true);
  23. // 沿两个轴缩放
  24. lineChart.setPinchZoom(true);
  25. // 动画
  26. lineChart.animateXY(2000,2000);
  27. setData();
  28. setMarker();
  29. }
  30. //加载数据
  31. public void setData(){
  32. float datas[] = {14f,15f,16f,17f,16f,16f};
  33. //在MPAndroidChart一般都是通过List<Entry>对象来装数据的
  34. List<Entry> entries = new ArrayList<Entry>();
  35. //循环取出数据
  36. for(int i = 0; i < datas.length; i++){
  37. entries.add(new Entry(i,datas[i]));
  38. }
  39. //一个LineDataSet对象就是一条曲线
  40. LineDataSet lineDataSet = new LineDataSet(entries,"第一条数据");
  41. //LineData才是正真给LineChart的数据
  42. LineData lineData = new LineData(lineDataSet);
  43. lineChart.setData(lineData);
  44. }
4.1标题(Description)设置

属性

注解

setEnabled()

是否启用,bool值

setText()

设置标题的文本

setTextSize()

设置文本大小

setTypeface()

设置文本样式,如:特殊字体等

setTextColor()

设置文本颜色

setXOffset()

设置X轴的偏移量,float值

setYOffset()

设置Y轴的偏移量,float值

setPosition()

设置标题X和Y轴的偏移量

lineChart.setDescription()

添加给LineChart

4.2图例(Legend)设置

属性

注解

setEnabled()

是否启用,bool值

setPosition(LegendPosition.BELOW_CHART_LEFT)

设置图例的位置在图表的 左下角

getLegend()

获取Legend对象

setFormSize()

设置图例文字大小

setTextColor()

设置文本颜色

setTypeface()

设置文本样式,如:特殊字体等

setFormSize()

设置图例的大小

setOrientation()

设置多个图例的排列方式

setForm()

设置图例的样式,如圆形、线形

setDrawInside()

是否将图例绘制在内部,bool值

setFormToTextSpace()

设置文本距离图例的距离,float值

setXOffset()

设置X轴的偏移量,float值

setYOffset()

设置Y轴的偏移量,float值

setVerticalAlignment()

设置图例在垂直方向上的排列方式,LegendVerticalAlignment枚举值

setHorizontalAlignment()

设置图例在水平方向上的排列方式,LegendHorizontalAlignment枚举值

setDirection

设置多个图例从什么方向开始绘制,如从左向右

4.3 X轴(XAxis)设置

属性

注解

setEnabled()

是否启用,bool值

setTextSize()

设置文本字体大小

setTypeface()

设置文本样式,如:特殊字体等

setTextColor()

设置字体颜色

setDrawGridLines()

是否绘制网格线(横向的线)

setGridLineWidth()

设置网格线的宽度

setGridColor()

设置网格线的颜色

setDrawAxisLine()

是否绘制靠近X轴的第一条线,设置xAxis.setDrawGridLines(false)才有效果

setAxisLineWidth()

设置靠近X轴的第一条线的宽度

setAxisLineWidth()

设置靠近X轴的第一条线的颜色

setPosition()

设置X轴的文本描述是否绘制在内侧

setDrawLabels()

是否绘制左侧的描述文字

setAxisMaximum()

设置X轴的最大值

setAxisMinimum()

设置X轴的最小值

setGranularity()

设置X轴每两个值之间的间隔

setGranularityEnabled()

是否启用间隔

setInverted()

设置是否倒序拍立

setValueFormatter()

数据展示:自定义格式,通过实现接口IAxisValueFormatter

setXOffset()

设置相对于X轴的偏移量(一般都会加点偏移量,以免第一个数据显示不全)

setYOffset()

设置相对于Y轴的偏移量

setCenterAxisLabels()

是否使文字在中间对齐

setLabelCount()

设置展示的个数,第二个参数如果设置为true表示将强制设置标签计数,这意味着指定的标签数将沿轴绘制并均匀分布-这可能会导致标签参差不齐

setPosition()

setPosition(XAxis.XAxisPosition.BOTTOM)

设置X所在的位置,可取值:TOP(默认值):位于上方,TOP_INSIDE:位于上方并绘制在图形内部,BOTTOM:位于下方,BOTTOM_INSIDE:位于下方并绘制在图形内部,BOTH_SIDED:上下两边都显示轴

setLabelRotationAngle()

设置旋转的角度,float值

用法:先把对象获取到,然后再去设置属性

  1. XAxis xAxis = lc.getXAxis();
  2. xAxis.setTextSize(14f);//设置文本大小
4.4 Y轴(YAxis)设置

基本和X轴一致(没有setLabelRotationAngle() 旋转角度)

getAxisLeft()

获取左边的YAxis对象

getAxisRight()

获取右边的YAxis对象

4.5 数据源(LineData)设置

属性

注解

setColor()

设置线条颜色

setCircleColor()

一次性设置所有圆点的颜色

setLineWidth()

设置线条的宽度

setCircleRadius()

设置圆点的半径大小

setDrawCircleHole()

设置是否为空心圆

setCircleColorHole()

设置空心圆心的颜色,注意该属性只有在setDrawCircleHole为true的时候才有效果

setDrawCircles()

是否绘制圆点,若为false则表示只有折线

setFillColor()

设置在曲线下方填充的颜色(阴影的颜色)

setDrawFilled()

是否在线条下方设置填充,bool类型

setMode()

用于设置线条的类型,Mode枚举值,如Mode.CUBIC_BEZIER表示贝塞尔曲线

setAxisDependency()

设置线条是参照左边的y轴还是右边的y轴,在绘制组合图的时候用到,AxisDependency枚举值

4.6 标记(marker)设置
  1. //点击指示器可显示更多详情
  2. public void setMarker(){
  3. // create marker to display box when values are selected
  4. MyMarkerView mv = new MyMarkerView(getContext(), R.layout.custom_marker_view);
  5. // Set the marker to the chart
  6. mv.setChartView(chart);
  7. lineChart.setMarker(mv);
  8. }
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="wrap_content"
  5. android:layout_height="40dp"
  6. android:background="@drawable/marker2"(图片可以自己找资源,不知道我放上去的这个能不能下载)
  7. tools:ignore="Overdraw">
  8. <TextView
  9. android:id="@+id/tvContent"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:layout_centerHorizontal="true"
  13. android:layout_marginTop="7dp"
  14. android:layout_marginLeft="5dp"
  15. android:layout_marginRight="5dp"
  16. android:text=""
  17. android:textSize="12sp"
  18. android:textColor="@android:color/white"
  19. android:ellipsize="end"
  20. android:singleLine="true"
  21. android:textAppearance="?android:attr/textAppearanceSmall" />
  22. </RelativeLayout>

引用:1.CSDN博主「夕灬颜」的原创文章https://blog.csdn.net/qq_43332570/article/details/103180779

引用:2.MPAndroidChart的demo

Github地址:https://github.com/PhilJay/MPAndroidChart

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/254666
推荐阅读
相关标签
  

闽ICP备14008679号