在 android开源图表库MPAndroidChart文档翻译(中) 介绍了设置数据,设置颜色,轴的格式化,图例,动态修改数据。这篇文章继续翻译MPAndroidChart文档剩余内容。
十七、ChartData 类
这个WIKI条目的意图是更好的介绍MPAndroidChart的数据模型。
ChartData类是所有图表数据类的基类,例如LineData,BarData等等,通过图表的setData方法提供表格数据。
public class LineData extends ChartData { ...
以下提到的方法是在ChartData类中实现,因此可以被用于所有的子类。
数据样式
setValueTextColor(int color): 设置数据文本颜色
setValueTextColors(List colors): 设置数据文本颜色list
setValueTextSize(float size): 设置数据文本字体大小
setValueTypeface(Typeface tf): 设置数据字体
setValueFormatter(ValueFormatter f): 格式化数据
setDrawValues(boolean enabled): 启用数据的绘制
setValueTextColors(List colors): 设置数据文本颜色list
setValueTextSize(float size): 设置数据文本字体大小
setValueTypeface(Typeface tf): 设置数据字体
setValueFormatter(ValueFormatter f): 格式化数据
setDrawValues(boolean enabled): 启用数据的绘制
获取属性相关方法
getDataSetByIndex(int index): 获取固定索引的DataSet
contains(Entry entry): 判断是否包含某一条目。执行效率很低。
contains(T dataSet): 判断是否包含dataset
contains(Entry entry): 判断是否包含某一条目。执行效率很低。
contains(T dataSet): 判断是否包含dataset
清除数据
clearValues(): 移除DataSet对象所有的值,不会影响x轴的值高亮数据
setHighlightEnabled(boolean enabled): 是否允许高亮显示setDrawVerticalHighlightIndicator(boolean enabled): 是否启用垂直方向上的高亮
setDrawHorizontalHighlightIndicator(boolean enabled): 是否启用水平方向上的高亮
十八、ChartData的子类
BarData 类(条形图数据)
setGroupSpace(float percent): 不同数据集的条目之间占一个条目宽度的百分比, 默认值80isGrouped(): 数据对象是否已经分组
ScatterData 类(散点图数据)
getGreatestShapeSize(): 返回所有ScatterDataSet中最大的图形尺寸PieData 类(饼图数据)
getDataSet():返回data对象的PieDataSet对象PieData 对象不能包含多个PieDataSets.setDataSet(PieDataSet set): 设置 PieDataSet
BubbleData (气泡图数据)
setHighlightCircleWidth(float width): 设置气泡宽度,单位dpCombinedData类(复合数据)
可以设置不同类型的数据,只用于CombinedChart
public class CombinedData extends ChartData {
// ...
public CombinedData(List<String> xVals) { ... }
public CombinedData(String[] xVals) { ... }
public void setData(LineData data) { ... }
public void setData(BarData data) { ... }
public void setData(ScatterData data) { ... }
public void setData(CandleData data) { ... }
// ...
}
十九、DataSet类
DataSet类是所有数据集的基类,例如LineDataSet,BarDataSet等DataSet类代表一个属于一个表项输入类型的群体。
方法跟CharData类似,只不过他是个集合。DataSet类还有对应子类不做详细翻译。原文详细信息
二十、DataSet子类
略
二十一、ViewPortHandler类
ViewPortHandler类负责处理图表视图。可以控制图表视图是否可见,视图的当前状态,平移和缩放/缩放级别,绘图区域和偏移。ViewPortHandler允许直接访问所有的上述性质和并直接修改。
不同于通过图表类修改视图,使用ViewPortHandler要小心,不正确使用会导致意外的行为。ViewPortHandler提供视图修改的更高级的方法。
获取实例
ViewPortHandler handler = chart.getViewPortHandler();
详细使用见API文档对这个类研究的比较深入才可以直接使用,否则很容易出问题。
二十二、自定义填充位置
FillFormatter接口允许自定义LineDataSet的填充线结束位置。只需要创建一个新的类,并实现FillFormatter接口。使用方法
public class MyCustomFillFormatter implements FillFormatter {
@Override
public float getFillLinePosition(LineDataSet dataSet, LineDataProvider dataProvider) {
float myDesiredFillPosition = ...;
// put your logic here...
return myDesiredFillPosition;
}
}
然后设置到LineDataSet对象上lineDataSet.setFillFormatter(new MyCustomFillFormatter());
默认实现为DefaultFillFormatter二十三、混淆
需要在混淆文件中添加
-keep class com.github.mikephil.charting.** { *; }
如果不添加,会导致动画出问题。
混淆的详细说明 更多信息
先简单翻译一下文档,了解使用。源码比较多,后期看源码再从代码层面分析。
欢迎扫描二维码,关注公众账号