Android MPAndroidChart --折线图
创始人
2024-05-24 08:26:51
0

主要使用的三方为:MPAndroidChart

1.使用方法:引入依赖或者导入module

repositories {

maven { url "https://jitpack.io" }

}

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

2.在布局中定义

android:id="@+id/lineChart"

android:layout_width="match_parent"

android:layout_height="400dp"

/>

3.折线图主要由六部分组成

  • 标题(Description)

  • 标记(marker)

  • 图例(Legend)

  • X轴(XAxis)

  • Y轴(YAxis)

  • 数据源(LineData)

4.最基础的使用方式

 @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_linechart);lineChart = findViewById(R.id.lineChart);// 背景颜色lineChart.setBackgroundColor(Color.WHITE);// 禁用描述文本lineChart.getDescription().setEnabled(true);// 启用触摸手势lineChart.setTouchEnabled(true);// 设置监听器lineChart.setOnChartValueSelectedListener(this);lineChart.setDrawGridBackground(false);// 启用拖动lineChart.setDragEnabled(true);// 启用缩放lineChart.setScaleEnabled(true);// lineChart.setScaleXEnabled(true);// lineChart.setScaleYEnabled(true);// 沿两个轴缩放lineChart.setPinchZoom(true);// 动画lineChart.animateXY(2000,2000);setData();setMarker();}//加载数据public void setData(){float datas[] = {14f,15f,16f,17f,16f,16f};//在MPAndroidChart一般都是通过List对象来装数据的List entries = new ArrayList();//循环取出数据for(int i = 0; i < datas.length; i++){entries.add(new Entry(i,datas[i]));}//一个LineDataSet对象就是一条曲线LineDataSet lineDataSet = new LineDataSet(entries,"第一条数据");//LineData才是正真给LineChart的数据LineData lineData = new LineData(lineDataSet);lineChart.setData(lineData);}

4.1标题(Description)设置

属性

注解

setEnabled()

是否启用,bool值

setText()

设置标题的文本

setTextSize()

设置文本大小

setTypeface()

设置文本样式,如:特殊字体等

setTextColor()

设置文本颜色

setXOffset()

设置X轴的偏移量,float值

setYOffset()

设置Y轴的偏移量,float值

setPosition()

设置标题X和Y轴的偏移量

lineChart.setDescription()

添加给LineChart

4.2图例(Legend)设置

属性

注解

setEnabled()

是否启用,bool值

setPosition(LegendPosition.BELOW_CHART_LEFT)

设置图例的位置在图表的 左下角

getLegend()

获取Legend对象

setFormSize()

设置图例文字大小

setTextColor()

设置文本颜色

setTypeface()

设置文本样式,如:特殊字体等

setFormSize()

设置图例的大小

setOrientation()

设置多个图例的排列方式

setForm()

设置图例的样式,如圆形、线形

setDrawInside()

是否将图例绘制在内部,bool值

setFormToTextSpace()

设置文本距离图例的距离,float值

setXOffset()

设置X轴的偏移量,float值

setYOffset()

设置Y轴的偏移量,float值

setVerticalAlignment()

设置图例在垂直方向上的排列方式,LegendVerticalAlignment枚举值

setHorizontalAlignment()

设置图例在水平方向上的排列方式,LegendHorizontalAlignment枚举值

setDirection

设置多个图例从什么方向开始绘制,如从左向右

4.3 X轴(XAxis)设置

属性

注解

setEnabled()

是否启用,bool值

setTextSize()

设置文本字体大小

setTypeface()

设置文本样式,如:特殊字体等

setTextColor()

设置字体颜色

setDrawGridLines()

是否绘制网格线(横向的线)

setGridLineWidth()

设置网格线的宽度

setGridColor()

设置网格线的颜色

setDrawAxisLine()

是否绘制靠近X轴的第一条线,设置xAxis.setDrawGridLines(false)才有效果

setAxisLineWidth()

设置靠近X轴的第一条线的宽度

setAxisLineWidth()

设置靠近X轴的第一条线的颜色

setPosition()

设置X轴的文本描述是否绘制在内侧

setDrawLabels()

是否绘制左侧的描述文字

setAxisMaximum()

设置X轴的最大值

setAxisMinimum()

设置X轴的最小值

setGranularity()

设置X轴每两个值之间的间隔

setGranularityEnabled()

是否启用间隔

setInverted()

设置是否倒序拍立

setValueFormatter()

数据展示:自定义格式,通过实现接口IAxisValueFormatter

setXOffset()

设置相对于X轴的偏移量(一般都会加点偏移量,以免第一个数据显示不全)

setYOffset()

设置相对于Y轴的偏移量

setCenterAxisLabels()

是否使文字在中间对齐

setLabelCount()

设置展示的个数,第二个参数如果设置为true表示将强制设置标签计数,这意味着指定的标签数将沿轴绘制并均匀分布-这可能会导致标签参差不齐

setPosition()

setPosition(XAxis.XAxisPosition.BOTTOM)

设置X所在的位置,可取值:TOP(默认值):位于上方,TOP_INSIDE:位于上方并绘制在图形内部,BOTTOM:位于下方,BOTTOM_INSIDE:位于下方并绘制在图形内部,BOTH_SIDED:上下两边都显示轴

setLabelRotationAngle()

设置旋转的角度,float值

用法:先把对象获取到,然后再去设置属性

XAxis xAxis = lc.getXAxis();
xAxis.setTextSize(14f);//设置文本大小

4.4 Y轴(YAxis)设置

基本和X轴一致(没有setLabelRotationAngle() 旋转角度)

getAxisLeft()

获取左边的YAxis对象

getAxisRight()

获取右边的YAxis对象

4.5 数据源(LineData)设置

属性

注解

setColor()

设置线条颜色

setCircleColor()

一次性设置所有圆点的颜色

setLineWidth()

设置线条的宽度

setCircleRadius()

设置圆点的半径大小

setDrawCircleHole()

设置是否为空心圆

setCircleColorHole()

设置空心圆心的颜色,注意该属性只有在setDrawCircleHole为true的时候才有效果

setDrawCircles()

是否绘制圆点,若为false则表示只有折线

setFillColor()

设置在曲线下方填充的颜色(阴影的颜色)

setDrawFilled()

是否在线条下方设置填充,bool类型

setMode()

用于设置线条的类型,Mode枚举值,如Mode.CUBIC_BEZIER表示贝塞尔曲线

setAxisDependency()

设置线条是参照左边的y轴还是右边的y轴,在绘制组合图的时候用到,AxisDependency枚举值

4.6 标记(marker)设置

    //点击指示器可显示更多详情public void setMarker(){// create marker to display box when values are selectedMyMarkerView mv = new MyMarkerView(getContext(), R.layout.custom_marker_view);// Set the marker to the chartmv.setChartView(chart);lineChart.setMarker(mv);}


引用:1.CSDN博主「夕灬颜」的原创文章https://blog.csdn.net/qq_43332570/article/details/103180779

引用:2.MPAndroidChart的demo

Github地址:https://github.com/PhilJay/MPAndroidChart

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...