MPAndroidChart曲线图

GitHub地址

https://github.com/PhilJay/MPAndroidChart上的星星说明了一切


添加依赖

compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'


  1. public class MainActivity extends AppCompatActivity {
  2. private MyLineChart mLineChart;
  3. private ArrayList<Entry> pointValues;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. mLineChart = (MyLineChart) findViewById(R.id.lineChart);
  9. initChart();
  10. initData();
  11. }
  12. //设置chart基本属性
  13. private void initChart() {
  14. //描述信息
  15. Description description = new Description();
  16. description.setText( "我是描述信息");
  17. //设置描述信息
  18. mLineChart.setDescription(description);
  19. //设置没有数据时显示的文本
  20. mLineChart.setNoDataText( "没有数据喔~~");
  21. //设置是否绘制chart边框的线
  22. mLineChart.setDrawBorders( true);
  23. //设置chart边框线颜色
  24. mLineChart.setBorderColor(Color.GRAY);
  25. //设置chart边框线宽度
  26. mLineChart.setBorderWidth( 1f);
  27. //设置chart是否可以触摸
  28. mLineChart.setTouchEnabled( true);
  29. //设置是否可以拖拽
  30. mLineChart.setDragEnabled( true);
  31. //设置是否可以缩放 x和y,默认true
  32. mLineChart.setScaleEnabled( false);
  33. //设置是否可以通过双击屏幕放大图表。默认是true
  34. mLineChart.setDoubleTapToZoomEnabled( false);
  35. //设置chart动画
  36. mLineChart.animateXY( 1000, 1000);
  37. //=========================设置图例=========================
  38. // 像"□ xxx"就是图例
  39. Legend legend = mLineChart.getLegend();
  40. //设置图例显示在chart那个位置 setPosition建议放弃使用了
  41. //设置垂直方向上还是下或中
  42. legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
  43. //设置水平方向是左边还是右边或中
  44. legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
  45. //设置所有图例位置排序方向
  46. legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
  47. //设置图例的形状 有圆形、正方形、线
  48. legend.setForm(Legend.LegendForm.CIRCLE);
  49. //是否支持自动换行 目前只支持BelowChartLeft, BelowChartRight, BelowChartCenter
  50. legend.setWordWrapEnabled( true);
  51. //=======================设置X轴显示效果==================
  52. XAxis xAxis = mLineChart.getXAxis();
  53. //是否启用X轴
  54. xAxis.setEnabled( true);
  55. //是否绘制X轴线
  56. xAxis.setDrawAxisLine( true);
  57. //设置X轴上每个竖线是否显示
  58. xAxis.setDrawGridLines( true);
  59. //设置是否绘制X轴上的对应值(标签)
  60. xAxis.setDrawLabels( true);
  61. //设置X轴显示位置
  62. xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
  63. //设置竖线为虚线样式
  64. // xAxis.enableGridDashedLine(10f, 10f, 0f);
  65. //设置x轴标签数
  66. xAxis.setLabelCount( 5, true);
  67. //图表第一个和最后一个label数据不超出左边和右边的Y轴
  68. // xAxis.setAvoidFirstLastClipping(true);
  69. //设置限制线 12代表某个该轴某个值,也就是要画到该轴某个值上
  70. LimitLine limitLine = new LimitLine( 12);
  71. //设置限制线的宽
  72. limitLine.setLineWidth( 1f);
  73. //设置限制线的颜色
  74. limitLine.setLineColor(Color.RED);
  75. //设置基线的位置
  76. limitLine.setLabelPosition(LimitLine.LimitLabelPosition.LEFT_TOP);
  77. limitLine.setLabel( "马丹我是基线,也可以叫我水位线");
  78. //设置限制线为虚线
  79. limitLine.enableDashedLine( 10f, 10f, 0f);
  80. //左边Y轴添加限制线
  81. axisLeft.addLimitLine(limitLine);
  82. //=================设置左边Y轴===============
  83. YAxis axisLeft = mLineChart.getAxisLeft();
  84. //是否启用左边Y轴
  85. axisLeft.setEnabled( true);
  86. //设置最小值(这里就按demo里固死的写)
  87. axisLeft.setAxisMinimum( 1);
  88. //设置最大值(这里就按demo里固死的写了)
  89. axisLeft.setAxisMaximum( 20);
  90. //设置横向的线为虚线
  91. axisLeft.enableGridDashedLine( 10f, 10f, 0f);
  92. //axisLeft.setDrawLimitLinesBehindData(true);
  93. //====================设置右边的Y轴===============
  94. YAxis axisRight = mLineChart.getAxisRight();
  95. //是否启用右边Y轴
  96. axisRight.setEnabled( true);
  97. //设置最小值(这里按demo里的数据固死写了)
  98. axisRight.setAxisMinimum( 1);
  99. //设置最大值(这里按demo里的数据固死写了)
  100. axisRight.setAxisMaximum( 20);
  101. //设置横向的线为虚线
  102. axisRight.enableGridDashedLine( 10f, 10f, 0f);
  103. }
  104. //设置数据
  105. private void initData() {
  106. //每个点的坐标,自己随便搞点(x,y)坐标就可以了
  107. pointValues = new ArrayList<>();
  108. for ( int i = 1; i < 19; i++) {
  109. int y = ( int)( Math.random() * 20);
  110. pointValues.add( new Entry(i, y));
  111. }
  112. //点构成的某条线
  113. LineDataSet lineDataSet = new LineDataSet(pointValues, "该线标签1");
  114. //设置该线的颜色
  115. lineDataSet.setColor(Color.RED);
  116. //设置每个点的颜色
  117. lineDataSet.setCircleColor(Color.YELLOW);
  118. //设置该线的宽度
  119. lineDataSet.setLineWidth( 1f);
  120. //设置每个坐标点的圆大小
  121. //lineDataSet.setCircleRadius(1f);
  122. //设置是否画圆
  123. lineDataSet.setDrawCircles( false);
  124. // 设置平滑曲线模式
  125. // lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);
  126. //设置线一面部分是否填充颜色
  127. lineDataSet.setDrawFilled( true);
  128. //设置填充的颜色
  129. lineDataSet.setFillColor(Color.BLUE);
  130. //设置是否显示点的坐标值
  131. lineDataSet.setDrawValues( false);
  132. //线的集合(可单条或多条线)
  133. List<ILineDataSet> dataSets = new ArrayList<>();
  134. dataSets.add(lineDataSet);
  135. //把要画的所有线(线的集合)添加到LineData里
  136. LineData lineData = new LineData(dataSets);
  137. //把最终的数据setData
  138. mLineChart.setData(lineData);
  139. }

猜你喜欢

转载自blog.csdn.net/qq_35992046/article/details/80857519
今日推荐