MPAndroidChart 添加并显示条形图标签

问题描述 投票:0回答:2

刚刚开始使用 MPAndroidChart 版本 3.0.0 beta,我创建了一个可以在条形图中显示我的值的项目。我的问题是在哪里添加和显示标签。 每个酒吧应该有自己的标签,例如。底部有“烟道”、“奶酪”等。不确定这个功能是什么,我正在积极搜索和阅读文档/维基,但目前没有乐趣。

android mpandroidchart
2个回答
4
投票

根据您的喜好,您可以使用

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
版本库的替代方法。


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()

© www.soinside.com 2019 - 2024. All rights reserved.