画图表常用的坐标轴(X轴、Y轴)属性来了~
上一篇:MPAndroidChart的详细使用——高亮
下一篇:MPAndroidChart的详细使用——设置数据
前面这些都是X轴和Y轴都具备的属性,后面有一点点是X轴或者Y轴的特性。
开启 / 关闭 对于轴上某部分的控制
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类来格式化轴值。
极限线
边界线和约束线都是极限线,用来显示特殊信息,如边界或约束。极限线在Y轴对象时以水平方向绘制,在X轴对象时以垂直方向绘制。
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来实现
LineDataSet dataSet = ...;
dataSet.setAxisDependency(AxisDependency.RIGHT);
Y轴上的零线
除了网格线之外,在Y轴,有零线,它在轴上的零(0)值处,类似于网格线,但可以单独配置。
setDrawZeroLine(boolean enabled) | 启用/禁用绘制零线。 |
---|---|
setZeroLineWidth(float width) | 设置零行的线宽。 |
setZeroLineColor(int color) | 设置零行的颜色。 |
实例代码:
// 数据在左边的Y轴
YAxis left = mChart.getAxisLeft();//实例化Y轴对象
left.setDrawLabels(false); // 不设置坐标轴数据标签
left.setDrawAxisLine(false); // 不绘制坐标轴线
left.setDrawGridLines(false); // 不绘制网格线
left.setDrawZeroLine(true); // 绘制零线
mChart.getAxisRight().setEnabled(false); // 不绘制右边Y轴
更多实例代码:
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); // 强制设置标签个数