关于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轴的动画 参数是动画执行时间 毫秒为单位}}