[关闭]
@zifeng328573112 2021-03-18T02:14:41.000000Z 字数 7676 阅读 1237

MPAndroidChart技术-坐标轴,X轴,Y轴,Labels(三)

1. 坐标轴

a) Document

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

b) 概述

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

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

c) 控制轴的哪些部分被绘制

  1. //上面右边效果图的部分代码,设置X轴
  2. XAxis xAxis = chart.getXAxis();
  3. xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); // 设置X轴的位置
  4. //xAxis.setTypeface(mTf); // 设置字体
  5. xAxis.setEnabled(false);
  6. // 上面第一行代码设置了false,所以下面第一行即使设置为true也不会绘制AxisLine
  7. xAxis.setDrawAxisLine(true);
  8. // 前面xAxis.setEnabled(false);则下面绘制的Grid不会有"竖的线"(与X轴有关)
  9. xAxis.setDrawGridLines(true); // 效果如下图
  1. // 上面左边效果图的代码
  2. // 两个都设置为 true
  3. xAxis.setEnabled(true);
  4. xAxis.setDrawGridLines(true);
  5. // 上面右边效果图的代码
  6. xAxis.setEnabled(false);
  7. // xAxis.setEnabled(false);则下面绘制的Grid不会有 "竖的线(与X轴有关)"
  8. xAxis.setDrawGridLines(true);

d) Styling / 修改轴

  1. xAxis.setTextColor(Color.BLUE);
  2. xAxis.setTextSize(24f);
  3. xAxis.setGridLineWidth(10f);
  4. xAxis.setGridColor(Color.RED);
  5. xAxis.setAxisLineColor(Color.GREEN);
  6. xAxis.setAxisLineWidth(5f);

e) 限制线

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

addLimitLine(LimitLine l) : 给该轴添加一个新的 LimitLine 。
removeLimitLine(LimitLine l) : 从该轴删除指定 LimitLine 。
还有其他的方法进行 添加/删除 操作。
img26 img27

  1. // 设置x轴的LimitLine,index是从0开始的
  2. LimitLine xLimitLine = new LimitLine(4f,"xL 测试");
  3. xLimitLine.setLineColor(Color.GREEN);
  4. xLimitLine.setTextColor(Color.GREEN);
  5. xAxis.addLimitLine(xLimitLine);
  6. // 设置x轴的LimitLine
  7. LimitLine yLimitLine = new LimitLine(50f,"yLimit 测试");
  8. yLimitLine.setLineColor(Color.RED);
  9. yLimitLine.setTextColor(Color.RED);
  10. // 获得左侧侧坐标轴
  11. YAxis leftAxis = chart.getAxisLeft();
  12. leftAxis.addLimitLine(yLimitLine);
  1. // 查看setLimitLinesBehindData()方法,true或false的效果图
  2. LimitLine xLimitLine = new LimitLine(2f,"is Behind");
  3. xLimitLine.setLineColor(Color.BLUE);
  4. xLimitLine.setTextColor(Color.BLUE);
  5. xAxis.addLimitLine(xLimitLine);
  6. xAxis.setDrawLimitLinesBehindData(true);
  7. // xAxis.setDrawLimitLinesBehindData(false);

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

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

  1. YAxis leftAxis = chart.getAxisLeft();
  2. LimitLine ll = new LimitLine(140f, "血压偏高");
  3. ll.setLineColor(Color.RED);
  4. ll.setLineWidth(4f);
  5. ll.setTextColor(Color.BLACK);
  6. ll.setTextSize(12f);
  7. // .. and more styling options
  8. leftAxis.addLimitLine(ll);

2、X坐标轴

a) 概述

XAxis 类是 AxisBase 的一个子类。
XAxis 类是所有与水平轴相关的 “数据和信息容器”。
每个 Line-, Bar-, Scatter-, CandleStick- and RadarChart 都有一个 XAxis 对象。 XAxis 对象展示了以 ArrayList<String>String[] ("xVals") 形式递交给 ChartData 对象的数据。

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

  1. XAxis xAxis = chart.getXAxis();

b) 自定义轴值

  1. // 上面左图的代码
  2. xAxis.setLabelsToSkip(4);
  3. // xAxis.resetLabelsToSkip();
  4. // 上面右图的代码,会发现 xAxis.setLabelsToSkip(4); 的效果并没有出现
  5. xAxis.setLabelsToSkip(4);
  6. xAxis.resetLabelsToSkip();

c) 格式化值

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

d) 范例代码

  1. XAxis xAxis = chart.getXAxis();
  2. xAxis.setPosition(XAxisPosition.BOTTOM);
  3. xAxis.setTextSize(10f);
  4. xAxis.setTextColor(Color.RED);
  5. xAxis.setDrawAxisLine(true);
  6. xAxis.setDrawGridLines(false);
  7. // set a custom value formatter
  8. xAxis.setXValueFormatter(new MyCustomFormatter());
  9. // and more...

3、Y轴

a) 概述

YAxisAxisBase 的一个子类。

YAxis 类是一切与垂直轴相关的数据和信息的容器。 每个 Line-, Bar-, Scatter or CandleStickChart 都有 leftrightYAxis 的对象,分别在左右两边。 但是 RadarChart 只有一个 YAxis 。 缺省情况下,图表的两个轴都被启用,并且将被绘制。

通过以下方法可获得 YAxis 类实例 :

  1. YAxis leftAxis = chart.getAxisLeft();
  2. YAxis rightAxis = chart.getAxisRight();
  3. YAxis leftAxis = chart.getAxis(AxisDependency.LEFT);
  4. YAxis yAxis = radarChart.getYAxis(); // this method radarchart only

在运行时,使用 public AxisDependency getAxisDependency() 方法以确定此轴表示图表的侧面。

b) 自定义轴值

  1. // 上面的右图是以下代码设置后的效果图
  2. leftAxis.setStartAtZero(false);
  3. leftAxis.setAxisMinValue(30);
  4. leftAxis.setAxisMaxValue(60);
  1. // 上面左图,间距长度是值长度的50%,间距长度是值长度的二分之一
  2. leftAxis.setSpaceTop(20f);
  3. // 上面左图,间距长度是值长度的100%,即两者相等
  4. leftAxis.setSpaceTop(100f);
  1. // 上面的左图
  2. leftAxis.setLabelCount(5, false);
  3. leftAxis.setShowOnlyMinMax(true);
  4. // 上面的右图
  5. leftAxis.setLabelCount(5, false);
  6. leftAxis.setShowOnlyMinMax(true);

为图表设定数据前,影响图表轴所需的值范围要先定义好。

c) 自定义格式的轴标签

d) 示例代码

  1. YAxis yAxis = mChart.getAxisLeft();
  2. yAxis.setTypeface(...); // set a different font
  3. yAxis.setTextSize(12f); // set the textsize
  4. yAxis.setAxisMaxValue(100f); // the axis maximum is 100
  5. yAxis.setTextColor(Color.BLACK);
  6. yAxis.setValueFormatter(new MyValueFormatter());
  7. yAxis.setLabelCount(6, false);
  8. //... and more

4、 其他章节索引

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注