刚刚开始使用 MPAndroidChart 版本 3.0.0 beta,我创建了一个可以在条形图中显示我的值的项目。我的问题是在哪里添加和显示标签。 每个酒吧应该有自己的标签,例如。底部有“烟道”、“奶酪”等。不确定这个功能是什么,我正在积极搜索和阅读文档/维基,但目前没有乐趣。
根据您的喜好,您可以使用
data
的 Entry
属性来存储标签,然后将其返回到您的 IAxisValueFormatter
实现中:
public class LabelValueFormatter implements IAxisValueFormatter {
private final DataSet mData;
public LabelValueFormatter(DataSet data) {
mData = data;
}
@Override
public String getFormattedValue(float value, AxisBase axis) {
// return the entry's data which represents the label
return (String) mData.getEntryForXPos(value, DataSet.Rounding.CLOSEST).getData();
}
}
这种方法允许您使用
Entry
构造函数(在本例中为 BarEntry
)来添加标签,这可以提高代码的可读性:
ArrayList<BarEntry> entries = new ArrayList<>();
for (int i = 0; i < length; i++) {
// retrieve x-value, y-value and label
entries.add(new BarEntry(x, y, label));
}
BarDataSet dataSet = new BarDataSet(entries, "description");
BarData data = new BarData(dataSet);
mBarChart.setData(data);
mBarChart.getXAxis().setValueFormatter(new LabelValueFormatter(data));
另请查看这个答案以获取更多信息以及使用标签与
BarChart
和新的3.0.0
版本库的替代方法。
您可以使用
IndexAxisValueFormatter
来实现此目的。下面是 Kotlin 的示例。
创建标签数组列表
val labels = arrayListOf<String>("Flue", "Cheese", "...")
设置图表数据
val entries = ArrayList<BarEntry>()
// Add entries in the above array list
val dataset = BarDataSet(entries, "Counts")
val barData = BarData(dataset)
chartView.data = barData
在X轴设置标签
val xAxis = chartView.xAxis
xAxis.position = XAxis.XAxisPosition.BOTTOM
xAxis.setDrawLabels(true)
xAxis.valueFormatter = IndexAxisValueFormatter(labels)
请务必在最后致电
invalidate()
。