MPAndroidChart 教程:坐标轴,X轴,Y轴,Labels(三)

本文详细介绍了MPAndroidChart中的坐标轴设置,包括X轴和Y轴标签、数据格式器、具体图表设置、图例、动态数据处理、视窗修改、动画效果以及MarkerView的使用。提供了轴的定制选项和如何创建LimitLines以呈现额外信息。
摘要由CSDN通过智能技术生成

MPAndroidChart 教程:设置数据,设置颜色(四)

MPAndroidChart 教程:数据格式器 ValueFormatter(五)

MPAndroidChart 教程:图表的具体设置 Specific chart settings(六)

MPAndroidchart 教程:图例 Legend(七)

MPAndroidChart 教程:动态和实时数据 Dynamic & Realtime Data(八)

MPAndroidChart 教程:修改视窗 Modifying the Viewport(九)

MPAndroidChart 教程:动画 Animations(十)

MPAndroidChart 教程:MarkerView(十一)

MPAndroidChart 教程:ChartData类,ChartData子类, DataSet类,DataSet子类(十二)

时间仓促,难免有错误,有的话希望大家在评论中指出,谢谢。

源码:范例代码在线查看或下载

一、坐标轴


1.Document

在文档中,AxisBase是XAxis和YAxis的父类

  • AxisBase

Baseclass of all labels.

  • XAxis

Class representing the x-axis labels settings. Only use the setter methods to modify it. Do not access public variables directly. Be aware that not all features the XLabels class provides are suitable for the RadarChart.

X轴标签设置。只使用setter方法来修改它,不要直接访问公共变量。请注意,not all features the XLabels class provides are suitable for the RadarChart(对于RadarChart蜘蛛网状图不是所有的Xlabels 都适用)。

  • YAxis

Class representing the y-axis labels settings and its entries. Only use the setter methods to modify it. Do not access public variables directly. Be aware that not all features the YLabels class provides are suitable for the RadarChart. Customizations that affect the value range of the axis need to be applied before setting data for the chart.

Y轴标签设置和它的条目。只使用setter方法来修改它,不要直接访问公共变量。请注意,not all features the XLabels class provides are suitable for the RadarChart(对于RadarChart蜘蛛网状图不是所有的Ylabels 都适用)。在为 chart 设置 data 之前,影响轴的值范围的 Customizations 需要先被应用。

2. 概述

下面提及的方法可以适用于两个轴 。

“轴”类允许特定的Style,由以下 components/parts 组成(可以包含):

  • 轴的标签(y轴垂直绘制 或 x轴水平取向),contain 轴的描述值。

  • 所谓 axis-line 被直接绘制在便签旁且平行。

  • grid-lines 在水平方向,且源自每一个轴标签。

  • LimitLines 允许呈现的特别信息,如边界或限制。

3. 控制轴的哪些部分被绘制

  • setEnabled(boolean enabled) : 设置轴启用或禁用。如果false,该轴的任何部分都不会被绘制(不绘制坐标轴/便签等)。比如:

//上面右边效果图的部分代码,设置X轴

XAxis xAxis = chart.getXAxis();

xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); // 设置X轴的位置

// xAxis.setTypeface(mTf); // 设置字体

xAxis.setEnabled(false);

// 上面第一行代码设置了false,所以下面第一行即使设置为true也不会绘制AxisLine

xAxis.setDrawAxisLine(true);

// 前面xAxis.setEnabled(false);则下面绘制的Grid不会有"竖的线"(与X轴有关)

xAxis.setDrawGridLines(true); // 效果如下图

  • setDrawGridLines(boolean enabled) : 设置为true,则绘制网格线。

// 上面左边效果图的代码

// 两个都设置为 true

xAxis.setEnabled(true);

xAxis.setDrawGridLines(true);

// 上面右边效果图的代码

xAxis.setEnabled(false);

// xAxis.setEnabled(false);则下面绘制的Grid不会有 “竖的线(与X轴有关)”

xAxis.setDrawGridLines(true);

  • setDrawAxisLine(boolean enabled) : 设置为true,则绘制该行旁边的轴线(axis-line)。

  • setDrawLabels(boolean enabled) : 设置为true,则绘制轴的标签。

4. Styling / 修改轴

  • setTextColor(int color) : 设置轴标签的颜色。

  • setTextSize(float size) : 设置轴标签的文字大小。

  • setTypeface(Typeface tf) : 设置轴标签的 Typeface。

  • setGridColor(int color) : 设置该轴的网格线颜色。

  • setGridLineWidth(float width) : 设置该轴网格线的宽度。

  • setAxisLineColor(int color) : 设置轴线的轴的颜色。

  • setAxisLineWidth(float width) : 设置该轴轴行的宽度。

xAxis.setTextColor(Color.BLUE);

xAxis.setTextSize(24f);

xAxis.setGridLineWidth(10f);

xAxis.setGridColor(Color.RED);

xAxis.setAxisLineColor(Color.GREEN);

xAxis.setAxisLineWidth(5f);

  • enableGridDashedLine(float lineLength, float spaceLength, float phase) : 启用网格线的虚线模式中得出,比如像这样“ - - - - - - ”。

  • “lineLength”控制虚线段的长度

  • “spaceLength”控制线之间的空间

  • “phase”controls the starting point.

5. 限制线

两个轴支持 LimitLines 来呈现特定信息,如边界或限制线。LimitLines 加入到 YAxis 在水平方向上绘制,添加到 XAxis 在垂直方向绘制。 如何通过给定的轴添加和删除 LimitLines

  • addLimitLine(LimitLine l) : 给该轴添加一个新的 LimitLine 。

  • removeLimitLine(LimitLine l) : 从该轴删除指定 LimitLine 。

  • 还有其他的方法进行 添加/删除 操作。

// 设置x轴的LimitLine,index是从0开始的

LimitLine xLimitLine = new LimitLine(4f,“xL 测试”);

xLimitLine.setLineColor(Color.GREEN);

xLimitLine.setTextColor(Color.GREEN);

xAxis.addLimitLine(xLimitLine);

// 设置x轴的LimitLine

LimitLine yLimitLine = new LimitLine(50f,“yLimit 测试”);

yLimitLine.setLineColor(Color.RED);

yLimitLine.setTextColor(Color.RED);

// 获得左侧侧坐标轴

YAxis leftAxis = chart.getAxisLeft();

leftAxis.addLimitLine(yLimitLine);

  • setDrawLimitLinesBehindData(boolean enabled) : 控制 LimitLinesactual data 之间的 z-order 。 如果设置为 true,LimitLines 绘制在 actual data 的后面,否则在其前面。 默认值:false

// 查看setLimitLinesBehindData()方法,true或false的效果图

LimitLine xLimitLine = new LimitLine(2f,“is Behind”);

xLimitLine.setLineColor(Color.BLUE);

xLimitLine.setTextColor(Color.BLUE);

xAxis.addLimitLine(xLimitLine);

xAxis.setDrawLimitLinesBehindData(true);

// xAxis.setDrawLimitLinesBehindData(false);

Limit lines(LimitLine类) 用来为用户提供简单明了的额外信息。

再举一个例子,在用户登录用的应用程序中,图表可能会显示各种血压测量结果。 为了让用户知道超过140mmHg 的血压是被认为是一个健康风险的用户,可以添加一个 140LimitLine 来提供该信息。示例代码 :

YAxis leftAxis = chart.getAxisLeft();

LimitLine ll = new LimitLine(140f, “血压偏高”);

ll.setLineColor(Color.RED);

ll.setLineWidth(4f);

ll.setTextColor(Color.BLACK);

ll.setTextSize(12f);

// … and more styling options

leftAxis.addLimitLine(ll);

二、X坐标轴


1. 概述

XAxis 类是 AxisBase 的一个子类。

XAxis 类是所有与水平轴相关的 “数据和信息容器”。

每个 Line-, Bar-, Scatter-, CandleStick- and RadarChart 都有一个 XAxis 对象。 XAxis 对象展示了以 ArrayList<String>String[] ("xVals") 形式递交给 ChartData 对象的数据。

为了获得 XAxis 类的实例,可执行以下操作:

XAxis xAxis = chart.getXAxis();

2. 自定义轴值

  • setSpaceBetweenLabels(int characters) : 设置标签字符间的空隙,默认characters间隔是4 。

  • setLabelsToSkip(int count) : 设置在”绘制下一个标签”时,要忽略的标签数。 This will disable the feature that automatically calculates an adequate space between the axis labels and set the number of labels to be skipped to the fixed number provided by this method. Call resetLabelsToSkip(...) to re-enable automatic calculation.

  • resetLabelsToSkip() : 调用这个方法将使得通过 setLabelsToSkip(...) 的“忽略效果”失效 while drawing the x-axis. Instead, the number of values to skip will again be calculated automatically.

// 上面左图的代码

xAxis.setLabelsToSkip(4);

// xAxis.resetLabelsToSkip();

// 上面右图的代码,会发现 xAxis.setLabelsToSkip(4); 的效果并没有出现

xAxis.setLabelsToSkip(4);

xAxis.resetLabelsToSkip();

  • setAvoidFirstLastClipping(boolean enabled) : 如果设置为true,则在绘制时会避免“剪掉”在x轴上的图表或屏幕边缘的第一个和最后一个坐标轴标签项。

  • setPosition(XAxisPosition pos) : 设置XAxis出现的位置。

  • TOPBOTTOM

  • TOP_INSIDEBOTTOM_INSIDEBOTH_SIDED。 (从左到右,从上到下,对应下图)

3. 格式化值

setValueFormatter(XAxisValueFormatter formatter)设置自定义格式,在绘制之前动态调整x的值。

4. 范例代码

XAxis xAxis = chart.getXAxis();
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

如何做好面试突击,规划学习方向?

面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。

学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。

同时我还搜集整理2020年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节

image

在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多。

image

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

是如果只通过碎片化的学习,对自己的提升是很慢的。

同时我还搜集整理2020年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节

[外链图片转存中…(img-WjcLSd4W-1713396209750)]

在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多。

[外链图片转存中…(img-Ou1fMNwx-1713396209750)]

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值