MPAndroidChart的详细使用——坐标轴(X轴、Y轴、零线)

画图表经常使用的坐标轴(X轴、Y轴)属性来了~

上一篇:MPAndroidChart的详细使用——高亮
下一篇:MPAndroidChart的详细使用——设置数据
前面这些都是X轴和Y轴都具有的属性,后面有一点点是X轴或者Y轴的特性。web

开启 / 关闭 对于轴上某部分的控制
setEnabled(boolean enabled) 开启或关闭轴。若是禁用,则无论其余设置如何,都不会绘制轴(X、Y轴)。
setDrawLabels(boolean enabled) 是否绘制坐标值。
setDrawAxisLine(boolean enabled) 是否绘制坐标线。
setDrawGridLines(boolean enabled) 是否绘制轴的网格线。
自定义轴范围(最小/最大)
setAxisMaximum(float max) 设置此轴的自定义最大值。
resetAxisMaximum() 撤消(删除)设置的最大值。
setAxisMinimum(float min) 设置此轴的自定义最小值。
resetAxisMinimum() 撤消(删除)设置的最小值
setInverted(boolean enabled) 是否将轴反转(最高的值将在底部,最低的值在顶部)
setSpaceTop(float percent) 设置图表中最高值的顶部间距(占总轴范围的百分比),与轴上的最高值相比。
setSpaceBottom(float percent) 将图表中最低值的底部间距(以总轴范围的百分比)与轴上的最低值相比较。
setShowOnlyMinMax(boolean enabled) 若是启用,此轴将只显示它的最小值和最大值。这将覆盖定义的标签计数(若是不是强制的话)。
setLabelCount(int count, boolean force) 设置y轴的标签数。请注意,这个数字不是固定的(若是force==false),而且只能近似。若是启用了强制(True),则会绘制精确的标签计数–这会致使轴上的不均匀数字。
setPosition(YAxisLabelPosition pos) 设置绘制轴标签的位置。内部图表或外部图表。
setGranularity(float gran) 设置y轴值之间的最小间隔。这可用于避免在缩放到为轴设置的小数数再也不容许区分两个轴值时重复值。
setGranularityEnabled(boolean enabled) 启用粒度特性,在缩放时限制y轴的间隔。默认值:false
自定义轴的样式
setTextColor(int color) 设置轴标签的颜色。
setTextSize(float size) 在dp中设置轴标签的文本大小。
setTypeface(Typeface tf) 创建一个习惯Typeface轴心标签。
setGridColor(int color) 设置此轴的网格线的颜色。
setGridLineWidth(float width) 设置此轴的网格线的宽度。
setAxisLineColor(int color) 设置此轴的轴线的颜色。
setAxisLineWidth(float width) 设置此轴的轴线的宽度。
enableGridDashedLine(float lineLength, float spaceLength, float phase) 容许以虚线方式绘制网格线,例如:“-”。“lineLength”控制行段的长度,“spaceLength”控制行之间的空间,“phase”控制起始点。
格式化坐标轴

可使用ValueFormatter类来格式化轴值。bash

极限线

边界线和约束线都是极限线,用来显示特殊信息,如边界或约束。极限线在Y轴对象时以水平方向绘制,在X轴对象时以垂直方向绘制。svg

addLimitLine(LimitLine l) 增长一个新的LimitLine到这个轴。
removeLimitLine(LimitLine l) 移除指定的LimitLine从这个轴。
setDrawLimitLinesBehindData(boolean enabled) 是否容许控制极限线和实际数据的顺序。若是此值设置为true,则极限线绘制在实际数据后面,不然绘制在前面。默认值:false

下面是一个实例:
图表可能会显示用户在应用程序中记录的各类血压测量结果。为了告知使用者收缩压超过140 mmHg被认为是健康风险,您能够添加LimitLine以提供这方面的资料。字体

YAxis leftAxis = chart.getAxisLeft();

LimitLine ll = new LimitLine(140f, "高血压界定线");
ll.setLineColor(Color.RED);
ll.setLineWidth(4f);
ll.setTextColor(Color.BLACK);
ll.setTextSize(12f);
// .. 更多的样式设置

leftAxis.addLimitLine(ll);
X轴的特性
//实例化X轴对象进行使用
XAxis xAxis = chart.getXAxis();
//设置X轴位置 有如下几种   TOP   BOTTOM   BOTH_SIDED   TOP_INSIDE    BOTTOM_INSIDE
xAxis.setPosition(XAxisPosition.BOTTOM);
//设置X轴标签数据绘制的角度   也就是X轴上数据标签的旋转角度
xAxis.setLabelRotationAngle(90)
xAxis.setTextSize(10f);
xAxis.setTextColor(Color.RED);
xAxis.setDrawAxisLine(true);
xAxis.setDrawGridLines(false);
// 自定义X轴上的数据格式
xAxis.setValueFormatter(new MyCustomFormatter());
Y轴的特性
YAxis leftAxis = chart.getAxisLeft();
YAxis rightAxis = chart.getAxisRight();

YAxis leftAxis = chart.getAxis(AxisDependency.LEFT);
YAxis rightAxis = chart.getAxis(AxisDependency.RIGHT);

// 雷达图获取YAxis方法  因为雷达图只有一个Y轴(其余图有两个),因此有独特的方法
YAxis yAxis = radarChart.getYAxis();
Y轴的统一性

在没有定义一边的状况下,图表上的两条Y轴数据以及样式比例都是同样的,若是想把两边的Y轴设置成不同的比例,能够经过设置数据对应的轴来实现这一点,经过更改DataSet的AxisDependency来实现spa

LineDataSet dataSet = ...;
dataSet.setAxisDependency(AxisDependency.RIGHT);
Y轴上的零线

除了网格线以外,在Y轴,有零线,它在轴上的零(0)值处,相似于网格线,但能够单独配置。.net

setDrawZeroLine(boolean enabled) 启用/禁用绘制零线。
setZeroLineWidth(float width) 设置零行的线宽。
setZeroLineColor(int color) 设置零行的颜色。

实例代码:code

// 数据在左边的Y轴
YAxis left = mChart.getAxisLeft();//实例化Y轴对象
left.setDrawLabels(false); // 不设置坐标轴数据标签
left.setDrawAxisLine(false); // 不绘制坐标轴线
left.setDrawGridLines(false); // 不绘制网格线
left.setDrawZeroLine(true); // 绘制零线
mChart.getAxisRight().setEnabled(false); // 不绘制右边Y轴

更多实例代码:orm

YAxis yAxis = mChart.getAxisLeft();//实例化Y轴对象
yAxis.setTypeface(...); // 设置Y轴上数据的字体
yAxis.setTextSize(12f); // 设置Y轴上数据字体大小
yAxis.setAxisMinimum(0f); // 设置Y轴最小值为0
yAxis.setAxisMaximum(100f); // 设置Y轴最大值为100
yAxis.setTextColor(Color.BLACK); // 设置字体颜色
yAxis.setValueFormatter(new MyValueFormatter());//设置Y轴数据显示格式
yAxis.setGranularity(1f); // 设置间隔为1
yAxis.setLabelCount(6, true); // 强制设置标签个数