Android之使用MPAndroidChart绘画折线图

一、简单使用

1、添加依赖

implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'

2、添加布局

<com.github.mikephil.charting.charts.LineChart
        android:layout_width="match_parent"
        android:layout_height="500dp"
        android:id="@+id/line_chart"/>

3、实例化

LineChart line_chart=findViewById(R.id.line_chart)

4、通过for循环来随机设置几个数据

List<Entry> list=new ArrayList<>();
 for (int i=0;i<10;i++){
            list.add(new Entry(i, (float) (Math.random()*60)));
        }

注:Math.random()获取随机数,Math.random()*60表示获取1到59的随机数,取不到60

5、创建LineDataSet并设置数据,第一个参数表示纵坐标,第二个参数就是折线图的主题,就是代表这个折线图是什么类型的折线图

LineDataSet lineDataSet=new LineDataSet(list,"大小");

6、将我们得到的数据集设进折线图里面去

LineData data=new LineData(lineDataSet);
line_chart.setData(data);

7、效果展示

二、修改颜色大小

1、修改折线的颜色

lineDataSet.setColor(Color.RED);

2、修改折线宽度

lineDataSet.setLineWidth(5f);

3、修改折线处文字的大小(不是坐标上的)

lineDataSet.setValueTextSize(23f);

4、修改折线处文字的颜色(不是坐标上的)

 lineDataSet.setValueTextColor(getResources().getColor(R.color.colorAccent));

5、效果展示

6、设置圆点颜色

lineDataSet.setCircleColor(Color.BULE);

7、设置圆点半径大小

lineDataSet.setCircleRadius(5f)

8、设置折线模式:直线、圆滑曲线、水平贝塞尔曲线等

lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);//这里是圆滑曲线

9、效果展示

//是否X轴绘制网格线
        line_chart.getXAxis().setDrawGridLines(false);
        //是否y轴绘制网格线
        line_chart.getAxisLeft().setDrawGridLines(false);
        line_chart.getAxisRight().setDrawGridLines(false);
        //是否绘制右侧轴线
        line_chart.getAxisRight().setEnabled(false);
        //设置此轴轴线的宽度
        line_chart.getXAxis().setAxisLineWidth(0f);
        //设置x轴的位置
        line_chart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
        //设置轴的最大值
        line_chart.getXAxis().setAxisMaximum(10f);
        line_chart.getAxisLeft().setAxisMaximum(60f);
        //设置轴的最小值
        line_chart.getXAxis().setAxisMinimum(0f);
        line_chart.getAxisLeft().setAxisMinimum(0f);
        //设置x轴标签的角度
        line_chart.getXAxis().setLabelRotationAngle(30f);
        //对y轴内容进行格式化
        line_chart.getAxisLeft().setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                String newValue=(int)value+"℃";
                return newValue;
            }
        });
        //---------------------------------------------设置折线图标题---------------------------------------------------//
        Description description=new Description();
        description.setText("折线图标题");
        description.setTextColor(Color.LTGRAY);description.setTextSize(23f);
        description.setTypeface(Typeface.DEFAULT_BOLD);//加粗显示
        //设置标题的位置
        WindowManager wm= (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics displayMetrics=new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(displayMetrics);
        float x=displayMetrics.widthPixels/2;
        description.setPosition(x,60);
        line_chart.setDescription(description);
        //-------------------------------------------------------------------------------------------------------------//
        //设置折线图的边距
        line_chart.setExtraOffsets(15f,70f,20f,20f);
        Legend();
        line_chart.animateX(5000); // X轴动画
        line_chart.animateY(5000); // Y轴动画
        //设置数值格式
        lineDataSet.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                String newValue=value+"";
                return newValue.substring(0,newValue.indexOf("."));
            }
        });
 private void Legend() {
        //对legend的一些设置
        //得到legend对象
        Legend legend=line_chart.getLegend();
        //设置legend的字体颜色
        legend.setTextColor(Color.BLUE);
        //设置legend的字体大小
        legend.setTextSize(23f);
        //不绘制在图形内部
        legend.setDrawInside(false);
        //设置legend字体加粗
        legend.setTypeface(Typeface.DEFAULT_BOLD);
        //设置图例大小
        legend.setFormSize(30f);
        //设置图例类型为线条
        legend.setForm(Legend.LegendForm.LINE);
        //设置图例的位置
        legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
        legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
        //设置图例距离底部的位置
        legend.setYOffset(20f);
    }

效果展示

结语:第一次绘制折线图,有很多属性没有实现,如果我有任何错误或不准确的地方,请各位大佬批评指正,我将非常感激您的帮助。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: mpandroidchart是一个Android图表库,可以用来绘制各种类型的图表,包括动态折线图。动态折线图可以实时显示数据的变化,非常适合用于监控和数据可视化等场景。使用mpandroidchart绘制动态折线图需要先创建一个LineChart对象,然后设置一些属性,如X轴和Y轴的范围、颜色、线条宽度等。接着,可以通过addEntry()方法向折线图中添加数据点,每次添加一个数据点后,就可以调用invalidate()方法刷新图表。最后,需要在适当的时候停止添加数据点,以免造成性能问题。 ### 回答2: MPAndroidChartAndroid平台上的一个图表库,它支持多种图表类型和交互式用户界面。其中动态折线图是该库的一种图表类型,它可以实现数据实时更新,使用户能够更好地了解数据的实时变化。 动态折线图的具体实现过程如下: 1. 添加依赖项 在你的项目中build.gradle文件中添加以下依赖项: dependencies { implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' } 2. 创建图表视图 使用布局文件为图表视图创建占位符。例如: <com.github.mikephil.charting.charts.LineChart android:id="@+id/chart" android:layout_width="match_parent" android:layout_height="match_parent"/> 3. 配置图表 在Activity中,定义LineChart对象并对其进行配置。以下是示例代码: LineChart chart = findViewById(R.id.chart); //设置图表描述 chart.getDescription().setEnabled(false); //设置可触摸和可拖拽 chart.setTouchEnabled(true); chart.setDragEnabled(true); //设置滚动和缩放 chart.setScaleEnabled(true); chart.setDrawGridBackground(false); //设置坐标轴 chart.getXAxis().setPosition(XAxisPosition.BOTTOM); chart.getXAxis().setDrawGridLines(false); chart.getXAxis().setEnabled(false); chart.getAxisLeft().setDrawGridLines(false); //设置动画 chart.animateXY(2000, 2000); 4. 添加数据 对于动态折线图,我们需要每秒更新一次数据。我们使用线程定时更新数据。以下是示例代码: final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { addEntry(); handler.postDelayed(this, 1000); } }, 1000); addEntry()方法用于在图表中添加新的数据点。以下是示例代码: private void addEntry() { LineData data = chart.getData(); if (data == null) { data = new LineData(); chart.setData(data); } ILineDataSet set = data.getDataSetByIndex(0); if (set == null) { set = createSet(); data.addDataSet(set); } float yValue = (float) (Math.random() * 10); data.addEntry(new Entry(set.getEntryCount(), yValue), 0); data.notifyDataChanged(); chart.setMaxVisibleValueCount(10); chart.moveViewToX(data.getEntryCount()); } createSet()方法用于初始化数据集。以下是示例代码: private LineDataSet createSet() { LineDataSet set = new LineDataSet(null, "Dynamic Data"); set.setAxisDependency(YAxis.AxisDependency.LEFT); set.setColor(Color.GREEN); set.setDrawCircles(false); set.setLineWidth(2f); set.setDrawValues(false); set.setMode(LineDataSet.Mode.CUBIC_BEZIER); return set; } 5. 运行应用程序 当你运行应用程序时,你会看到随着时间的推移,新数据点会添加到动态折线图中,并且图表会动态更新。 结论 MPAndroidChart图表库使开发动态折线图变得非常容易,它提供了多种配置选项,使您能够自定义您的图表。通过使用线程和定时器,该库能够轻松地实现数据实时更新。动态折线图可以帮助用户更好地了解数据的实时变化,为应用程序提供更高的价值和用户体验。 ### 回答3: mpandroidchart是一款开源的Android图表库,其中包括的动态折线图功能使得Android开发者可以轻松地将折线图嵌入到自己的应用中。这个库使用简单,能够满足大多数应用的需求,并且在设计上非常灵活,开发者可以自定义图表的各种参数来实现自己的需求。 使用mpandroidchart的动态折线图功能,只需要简单几步即可完成:首先,添加依赖库;其次,创建一个线图视图对象;然后,设置数据。至此,你就可以在你的应用中通过调整线图的数据模型来动态地更新折线图。如果你想要进一步地自定义折线图,可以通过设置不同的线型、颜色、数据点大小等参数来实现。同时,mpandroidchart也提供了缩放、滑动等交互控制,帮助你更灵活地处理数据。 mpandroidchart支持多种折线图类型,包括线图、柱状图等,你可以随时根据你的需求来选择。这些图表类型的特点各异,比如,柱状图适合显示统计数据,线图则适合呈现数据的变化趋势。总之,总有一种图表类型适合你的应用。 总的来说,mpandroidchart的动态折线图功能不仅帮助你直观地呈现数据,而且还提供了丰富的设计参数和交互控制,可以满足大多数应用的需求,是一款非常有价值的Android图表库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值