当前位置:   article > 正文

Android之使用MPAndroidChart绘画折线图_mpchartandroid折线图

mpchartandroid折线图

一、简单使用

1、添加依赖

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

2、添加布局

  1. <com.github.mikephil.charting.charts.LineChart
  2. android:layout_width="match_parent"
  3. android:layout_height="500dp"
  4. android:id="@+id/line_chart"/>

3、实例化

LineChart line_chart=findViewById(R.id.line_chart)

4、通过for循环来随机设置几个数据

  1. List<Entry> list=new ArrayList<>();
  2. for (int i=0;i<10;i++){
  3. list.add(new Entry(i, (float) (Math.random()*60)));
  4. }

注:Math.random()获取随机数,Math.random()*60表示获取1到59的随机数,取不到60

5、创建LineDataSet并设置数据,第一个参数表示纵坐标,第二个参数就是折线图的主题,就是代表这个折线图是什么类型的折线图

LineDataSet lineDataSet=new LineDataSet(list,"大小");

6、将我们得到的数据集设进折线图里面去

  1. LineData data=new LineData(lineDataSet);
  2. line_chart.setData(data);

7、效果展示

二、修改颜色大小

1、修改折线的颜色

lineDataSet.setColor(Color.RED);

2、修改折线宽度

lineDataSet.setLineWidth(5f);

3、修改折线处文字的大小(不是坐标上的)

lineDataSet.setValueTextSize(23f);

4、修改折线处文字的颜色(不是坐标上的)

 lineDataSet.setValueTextColor(getResources().getColor(R.color.colorAccent));

5、效果展示

6、设置圆点颜色

lineDataSet.setCircleColor(Color.BULE);

7、设置圆点半径大小

lineDataSet.setCircleRadius(5f)

8、设置折线模式:直线、圆滑曲线、水平贝塞尔曲线等

lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);//这里是圆滑曲线

9、效果展示

  1. //是否X轴绘制网格线
  2. line_chart.getXAxis().setDrawGridLines(false);
  3. //是否y轴绘制网格线
  4. line_chart.getAxisLeft().setDrawGridLines(false);
  5. line_chart.getAxisRight().setDrawGridLines(false);
  6. //是否绘制右侧轴线
  7. line_chart.getAxisRight().setEnabled(false);
  8. //设置此轴轴线的宽度
  9. line_chart.getXAxis().setAxisLineWidth(0f);
  10. //设置x轴的位置
  11. line_chart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
  12. //设置轴的最大值
  13. line_chart.getXAxis().setAxisMaximum(10f);
  14. line_chart.getAxisLeft().setAxisMaximum(60f);
  15. //设置轴的最小值
  16. line_chart.getXAxis().setAxisMinimum(0f);
  17. line_chart.getAxisLeft().setAxisMinimum(0f);
  18. //设置x轴标签的角度
  19. line_chart.getXAxis().setLabelRotationAngle(30f);
  20. //对y轴内容进行格式化
  21. line_chart.getAxisLeft().setValueFormatter(new ValueFormatter() {
  22. @Override
  23. public String getFormattedValue(float value) {
  24. String newValue=(int)value+"℃";
  25. return newValue;
  26. }
  27. });
  28. //---------------------------------------------设置折线图标题---------------------------------------------------//
  29. Description description=new Description();
  30. description.setText("折线图标题");
  31. description.setTextColor(Color.LTGRAY);description.setTextSize(23f);
  32. description.setTypeface(Typeface.DEFAULT_BOLD);//加粗显示
  33. //设置标题的位置
  34. WindowManager wm= (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
  35. DisplayMetrics displayMetrics=new DisplayMetrics();
  36. wm.getDefaultDisplay().getMetrics(displayMetrics);
  37. float x=displayMetrics.widthPixels/2;
  38. description.setPosition(x,60);
  39. line_chart.setDescription(description);
  40. //-------------------------------------------------------------------------------------------------------------//
  41. //设置折线图的边距
  42. line_chart.setExtraOffsets(15f,70f,20f,20f);
  43. Legend();
  44. line_chart.animateX(5000); // X轴动画
  45. line_chart.animateY(5000); // Y轴动画
  46. //设置数值格式
  47. lineDataSet.setValueFormatter(new ValueFormatter() {
  48. @Override
  49. public String getFormattedValue(float value) {
  50. String newValue=value+"";
  51. return newValue.substring(0,newValue.indexOf("."));
  52. }
  53. });
  1. private void Legend() {
  2. //对legend的一些设置
  3. //得到legend对象
  4. Legend legend=line_chart.getLegend();
  5. //设置legend的字体颜色
  6. legend.setTextColor(Color.BLUE);
  7. //设置legend的字体大小
  8. legend.setTextSize(23f);
  9. //不绘制在图形内部
  10. legend.setDrawInside(false);
  11. //设置legend字体加粗
  12. legend.setTypeface(Typeface.DEFAULT_BOLD);
  13. //设置图例大小
  14. legend.setFormSize(30f);
  15. //设置图例类型为线条
  16. legend.setForm(Legend.LegendForm.LINE);
  17. //设置图例的位置
  18. legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
  19. legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
  20. //设置图例距离底部的位置
  21. legend.setYOffset(20f);
  22. }

效果展示

结语:第一次绘制折线图,有很多属性没有实现,如果我有任何错误或不准确的地方,请各位大佬批评指正,我将非常感激您的帮助。

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

闽ICP备14008679号