MPAndroidChart中LineChart折线图详细用法(一)

先看一下具体的图表效果

 

没错这图表就是通过 MPAndroidChart 的 LineChart直接生成的。

直接欣赏 Java 源码吧 !

public class LineChartActivity extends AppCompatActivity {

    private LineChart mLineChart;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.linechart_activity);

        mLineChart = (LineChart) findViewById(R.id.linechart);

        //图表设置
        mLineChart.setNoDataText("暂无数据");
        mLineChart.setExtraOffsets(0,0,0,10); //设置图表距离上下左右的距离
        mLineChart.setDrawGridBackground(false);
        mLineChart.setScaleEnabled(false);


        mLineChart.getAxisRight().setEnabled(false); //隐藏右侧Y轴
        //mLineChart.getAxisLeft().setEnabled(false); //隐藏左侧的Y轴
        //数据轴设置部分

        XAxis xAxis = mLineChart.getXAxis(); //获取表格的X轴
        xAxis.setEnabled(true); //设置轴启用或禁用 如果禁用以下的设置全部不生效
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); //设置x轴的显示位置

        //设置轴线属性
        xAxis.setDrawAxisLine(true); //是否绘制轴线
        xAxis.setAxisLineColor(Color.BLACK); //设置x轴线颜色
        xAxis.setAxisLineWidth(1f);

        //设置标签属性
        xAxis.setDrawLabels(true);//是否绘制轴线上的标签
        //xAxis.setTextColor(12); // 设置轴标签字体大小
        xAxis.setTextColor(Color.BLUE);//设置轴标签的字体颜色
//      xAxis.setAxisMinimum(0); //设置x轴的最小值
//      xAxis.setAxisMaximum(100); //设置x轴的最大值
//      xAxis.setLabelCount(10); //设置x轴显示标签数量

        xAxis.setAvoidFirstLastClipping(true); //图表将避免第一个和最后一个标签条目被减掉在图表或屏幕的边缘
        xAxis.setLabelRotationAngle(-30f); //设置x轴标签的旋转角度

        //设置网格线
        //xAxis.setDrawGridLines(false); //设置x轴上每个点对应的线
        //xAxis.setGridLineWidth(1f); //设置竖线宽度
        //xAxis.setGridColor(Color.RED);

        //设置竖线的显示样式为虚线(lineLength控制虚线段的长度,spaceLength控制线之间的空间)
        //xAxis.enableAxisLineDashedLine(1f,1f,0);
        //xAxis.setGranularity(1f);
        //xAxis.setValueFormatter(null);


        //mLineChart.getXAxis().setEnabled(false); //隐藏X轴

        ArrayList<Entry> values = new ArrayList<>();
        values.add(new Entry(10,50));
        values.add(new Entry(20,66));
        values.add(new Entry(30,30));
        values.add(new Entry(40,80));
        values.add(new Entry(50,50));
        values.add(new Entry(60,70));

        setData(values);

    }

    public void setData(ArrayList<Entry> values){

        LineDataSet set = new LineDataSet(values,"测试折线图");

        set.setLineWidth(1.5f); //设置折线的宽度
        set.setValueTextSize(10f); //设置显示值的文字大小
        set.setColor(Color.RED); //设置折线颜色
        set.setCircleColor(Color.RED); //设置焦点圆心的颜色
        set.setCircleRadius(3f); //设置焦点圆心的大小
        set.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER); //设置成曲线
        //set.setMode(LineDataSet.Mode.CUBIC_BEZIER);
        //set.setMode(LineDataSet.Mode.STEPPED);
        //set.setAxisDependency(YAxis.AxisDependency.LEFT);

        //设置点击交叉线
        set.setHighlightEnabled(true); //是否禁用点击高亮线
        set.setHighLightColor(Color.BLUE); //设置点击交点后显示交高亮线的颜色
        set.enableDashedHighlightLine(10f,5f,0); //点击后的高亮线的显示样式
        set.setHighlightLineWidth(1f); //设置点击交点后显示高亮的线宽

        //设置曲线下面的填充颜色
        set.setDrawFilled(true);
        //set.setFillAlpha(0);
        set.setFillColor(Color.BLUE);


        ArrayList<ILineDataSet> dataSet = new ArrayList<>();
        dataSet.add(set);

        LineData data = new LineData(dataSet);
        mLineChart.setData(data);
        mLineChart.invalidate();

    }
    
}

有些代码是注释掉了,但这个不影响上面图片的生成效果。

如果需要测试更多的效果,可以通过取消上面注释的查看。

 

posted @ 2022-07-31 00:42  星锋  阅读(1883)  评论(0编辑  收藏  举报