Android MPAndroidChart LineChart

Android MPAndroidChart LineChart

  1. 首先添加依赖

    在project下打开build.gradle,在allprojects写入
    maven{ url ‘https://jitpack.io’}

在这里插入图片描述

  1. 在app下打开build.gradle,添加依赖

    implementation ‘com.github.PhilJay:MPAndroidChart:v3.1.0’

在这里插入图片描述
接下来就可以使用

在需要的xml中使用对应控件

控件作用
com.github.mikephil.charting.charts.BarChart柱状图
com.github.mikephil.charting.charts.HorizontalBarChart水平柱状图
com.github.mikephil.charting.charts.LineChart折线图
com.github.mikephil.charting.charts.PieChart饼图
com.github.mikephil.charting.charts.CombinedChart组合图
com.github.mikephil.charting.charts.RadarChart雷达图
com.github.mikephil.charting.charts.BubbleChart泡泡图
com.github.mikephil.charting.charts.ScatterChart散点图
com.github.mikephil.charting.charts.CandleStickChart蜡烛图

一些通用的方法

常用方法解释
setExtraOffsets()设置左,上,右,下的偏移量
invalidate()加载
getXAxis()获得x轴
getAxisRight()获取右轴
getAxisLeft()获取左轴
getDescription()获得图表的描述
getLegend()获得图例的描述

下面已图为例

折线图

  1. 设置各点的数据(Entry)
    注意Entry为这个jar包提供的
List<Entry> yVals1 = new ArrayList<>();
float[] ys1 = new float[] {
        19f, 19f, 18f, 18f, 18f, 18f, 17f, 16f, 17f, 19f,
        21f, 21f};
for (int i = 0; i < ys1.length; i++) {
    yVals1.add(new Entry((i + 1) * 3,ys1[i]));
}

  1. 用LineDataSet连接各个点的数据
LineDataSet set1=new LineDataSet(yVals1,"图例名");

为该图例装饰的一些常用方法

常用方法解释
setDrawFilled()设置允许填充
setFillColor()设置填充颜色
setColor()设置线条颜色
setMode()设置风格
setLineWidth()设置线宽
setHighlightEnabled()是否禁用点击高亮线
setForm()/设置图例的形式
setValueTextSize()设置显示值文字大小
  1. 用LineData完成设置
LineData lineData=new LineData(set1);

多条线可添加在该构造方法后

LineData lineData=new LineData(set1,set2);

也可以

ArrayList<ILineDataSet> dataSets=new ArrayList<>();
dataSets.add(set1);dataSets.add(set2);
LineData data=new LineData(dataSets);
  1. 添加加载
lineChart.setData(lineData);
lineChart.invalidate();
  1. 设置x轴
XAxis xAxis = lineChart.getXAxis();
常用方法解释
setDrawGridLines()是否画网格线
setAxisMinimum()设置最小值
setAxisMaximum()最大值
setLabelCount()显示的个数
setPosition()所在位置
setEnabled()禁用显示
  1. 设置左,右轴
    同理x轴
YAxis axisLeft = lineChart.getAxisLeft();

完整代码

package com.example.mpandroidchart_all.FragmentChart;

import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.example.mpandroidchart_all.Market.TMarket;
import com.example.mpandroidchart_all.R;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;

import java.util.ArrayList;
import java.util.List;


public class lineChartFragment extends Fragment {
    private LineChart lineChart;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_linechart,container,false);
        lineChart=view.findViewById(R.id.line_chart);

        setXAxis();
        setYAxis();
        initData();

        return view;
    }
    private void setXAxis(){
        XAxis xAxis = lineChart.getXAxis();
        xAxis.setAxisMinimum(0f);
        xAxis.setAxisMaximum(42f);
        xAxis.setLabelCount(15);
        xAxis.setDrawGridLines(false);
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

    }
    private void setYAxis(){
        YAxis axisLeft = lineChart.getAxisLeft();
        axisLeft.setAxisMaximum(26);
        axisLeft.setAxisMinimum(14);
        lineChart.getAxisRight().setEnabled(false);
    }

    private void initData() {
        lineChart.setExtraOffsets(24f,24f,24f,0f);
        setChartData();
    }
    private void setChartData(){
        List<Entry> yVals1 = new ArrayList<>();
        float[] ys1 = new float[] {
                19f, 19f, 18f, 18f, 18f, 18f, 17f, 16f, 17f, 19f,
                21f, 21f};
        for (int i = 0; i < ys1.length; i++) {
            yVals1.add(new Entry((i + 1) * 3,ys1[i]));
        }
        LineDataSet set1=new LineDataSet(yVals1,"");
        set1.setDrawFilled(true);
        set1.setFillColor(Color.WHITE);
        LineData lineData=new LineData(set1);
        TMarket tMarket=new TMarket();
        lineChart.setMarker(tMarket);
        lineChart.setData(lineData);
        lineChart.invalidate();
    }
}

注意我是用碎片做的,如果需要复制所需代码即可

在这里插入图片描述

如果想把线改成贝塞斯曲线

set1.setMode(LineDataSet.Mode.CUBIC_BEZIER)

即可

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android中使用LineChart可以通过使用MPAndroidChart库来实现。MPAndroidChart是一个功能强大的图表库,可以方便地创建各种类型的图表,包括线图、柱状图、饼图等。 首先,需要在项目的build.gradle文件中添加MPAndroidChart库的依赖: ``` dependencies { implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' } ``` 然后,在布局文件中添加LineChart控件: ``` <com.github.mikephil.charting.charts.LineChart android:id="@+id/line_chart" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 接下来,在代码中获取LineChart控件的实例,并对其进行配置和数据的设置: ``` LineChart lineChart = findViewById(R.id.line_chart); // 设置线图的描述 lineChart.getDescription().setEnabled(false); // 设置线图的缩放 lineChart.setTouchEnabled(true); lineChart.setDragEnabled(true); lineChart.setScaleEnabled(true); lineChart.setPinchZoom(true); // 创建一条数据集并添加数据 List<Entry> entries = new ArrayList<>(); entries.add(new Entry(0, 10)); entries.add(new Entry(1, 20)); entries.add(new Entry(2, 30)); entries.add(new Entry(3, 40)); entries.add(new Entry(4, 50)); LineDataSet dataSet = new LineDataSet(entries, "Label"); dataSet.setColor(Color.RED); dataSet.setValueTextColor(Color.BLUE); // 创建一个数据集的数组并将其设置到线图上 List<ILineDataSet> dataSets = new ArrayList<>(); dataSets.add(dataSet); LineData data = new LineData(dataSets); lineChart.setData(data); // 刷新线图 lineChart.invalidate(); ``` 以上代码实现了一个简单的线图,并将其添加到了LineChart控件上。可以通过修改数据集的值,来实现动态更新线图的效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值