当前位置: 代码迷 >> 综合 >> MPAndroidChart LIneChart 折线图遇到的一些问题记录。
  详细解决方案

MPAndroidChart LIneChart 折线图遇到的一些问题记录。

热度:83   发布时间:2024-02-28 08:39:42.0

关于MPAndroidChart LIneChart 折线图组遇到的一些问题记录。

我是用的版本是3.0.2

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

如果使用柱状图有问题的童鞋可以参考我的另一篇文章,传送门

关于MPAndroidChart BarChart 柱状图组遇到的一些问题记录。

相对于柱状图,折线图就简单了很多,注释写的很详细,直接上代码

xml文件

<FrameLayoutandroid:layout_width="match_parent"android:layout_height="200dp"><com.github.mikephil.charting.charts.LineChartandroid:id="@+id/line_chart1"android:layout_width="match_parent"android:layout_height="match_parent"></com.github.mikephil.charting.charts.LineChart></FrameLayout>

java代码

/*** 题量折线图** @param histogramData*/private void initLineChart1(final List<TopicAnalysisEntity.HistoryBean> histogramData) {if (histogramData != null && histogramData.size() > 0) {List<Entry> list = new ArrayList<>();for (int i = 0; i < histogramData.size(); i++) {list.add(new Entry(i, histogramData.get(i).getAnswerNum()));     //其中两个数字对应的分别是   X轴   Y轴}//list是你这条线的数据  "题量" 是你对这条线的描述(也就是图例上的文字)LineDataSet lineDataSet = new LineDataSet(list, "题量");lineDataSet.setColor(getResources().getColor(R.color.tv_default_blue));            //折线颜色lineDataSet.setFillColor(getResources().getColor(R.color.tv_default_blue));        //折线以下填充颜色lineDataSet.setDrawFilled(true);                                                   //是否填充lineDataSet.setFillAlpha(10);                                                      //填充颜色透明度lineDataSet.setLineWidth(1f);                                                      //折线宽度//是否画折线点上的空心圆  false表示直接画成实心圆lineDataSet.setDrawCircleHole(false);lineDataSet.setValueTextColor(getResources().getColor(R.color.tv_default_blue));   //折线上数值颜色lineDataSet.setCircleColor(getResources().getColor(R.color.tv_default_blue));      //折线上圆点的颜色lineDataSet.setCircleRadius(2);                                                    //圆点的半径
//        lineDataSet.setValueTextSize(12);                                                      //折线字号LineData lineData = new LineData(lineDataSet);lineChart1.setData(lineData);//##以下设置进入是默认放大 显示七天的数据lineChart1.setScaleXEnabled(true);   //支持x轴缩放lineChart1.setScaleYEnabled(false);  //禁止y轴缩放if (list.size() > 7) {//如果数量大于7 把折线图放大四倍lineChart1.setScaleMinima(4.0f, 1.0f);} else {lineChart1.setScaleMinima(1f, 1.0f);}lineChart1.moveViewToX(list.size() - 1);                         //放大后默认从最后一天查看//            lineChart1.getXAxis().setLabelRotationAngle(-15);lineChart1.getXAxis().setLabelCount(list.size(), false);           //x轴最大数据//设置最小间隔 这个比较重要 如果不设置这个 x轴随着放大过程会出现小数点 会直接影响到给x轴命名lineChart1.getXAxis().setGranularity(1);lineChart1.getXAxis().setValueFormatter(new IAxisValueFormatter() {@Overridepublic String getFormattedValue(float v, AxisBase axisBase) {Log.e(TAG_LOG, "lineChart1Value: " + v);if (v < histogramData.size()) {String s = String.valueOf(histogramData.get((int) v).getDay());String month = s.substring(4, 6);String day = s.substring(6, s.length());return month + "." + day;}return "";}});
//        lineChart1.getXAxis().setDrawGridLines(false);                   //是否绘制X轴上的网格线(背景里面的竖线)
//        lineChart1.getAxisLeft().setDrawGridLines(false);                //是否绘制Y轴上的网格线(背景里面的横线)
//            lineChart1.getXAxis().setGridColor(getResources().getColor(R.color.tv_default_gray));
//            lineChart1.getAxisLeft().setGridColor(getResources().getColor(R.color.tv_default_gray));lineChart1.getDescription().setEnabled(false);                   //隐藏文字介绍lineChart1.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);   //X轴所在位置   默认为上面lineChart1.getLegend().setEnabled(false);                        //隐藏图例
//            lineChart1.getAxisLeft().setEnabled(false);                      //隐藏左边的y轴lineChart1.getAxisRight().setEnabled(false);                     //隐藏右边的y轴//数据更新lineChart1.notifyDataSetChanged();lineChart1.invalidate();//动画(如果使用了动画可以则省去更新数据的那一步)
//            lineChart1.animateY(2000); //折线在Y轴的动画  参数是动画执行时间 毫秒为单位}}