Android 如何在BubbleChart中显示x轴标签?

Android 如何在BubbleChart中显示x轴标签?,android,charts,bar-chart,mpandroidchart,bubble-chart,Android,Charts,Bar Chart,Mpandroidchart,Bubble Chart,我使用的是BubbleChart v3.0.2。在此版本中,我无法在xAxis上设置自定义标签。如何为每个条设置xAxis标签。i、 e(标签1、标签2等) 如果有人在it行业工作或知道如何做,请分享。您可以通过扩展IValueFormatter来实现这一点。如果要创建条目到字符串标签的简单映射,可以这样做: import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.utils.View

我使用的是BubbleChart v3.0.2。在此版本中,我无法在xAxis上设置自定义标签。如何为每个条设置xAxis标签。i、 e(标签1、标签2等)


如果有人在it行业工作或知道如何做,请分享。

您可以通过扩展
IValueFormatter
来实现这一点。如果要创建
条目
字符串
标签的简单映射,可以这样做:

import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.utils.ViewPortHandler;

import java.util.Map;

public class MapValueFormatter implements IValueFormatter {

    private final Map<Entry, String> labels;

    public MapValueFormatter(Map<Entry, String> labels) {
        this.labels = labels;
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        String label = labels.get(entry);
        if (label == null) {
            return "";
        }

        return label;
    }
}
Map<Entry,String> labels = new HashMap<>();
for (BubbleEntry bubbleEntry : dataSet.getValues()) {
    labels.put(bubbleEntry, generateRandomString());
}
dataSet.setValueFormatter(new MapValueFormatter(labels));
import com.github.mikephil.charting.data.Entry;
导入com.github.mikephil.charting.utils.ViewPortHandler;
导入java.util.Map;
公共类MapValueFormatter实现了IValueFormatter{
私人最终地图标签;
公共MapValueFormatter(地图标签){
this.labels=标签;
}
@凌驾
公共字符串getFormattedValue(浮点值、条目、int-dataSetIndex、ViewPortHandler和ViewPortHandler){
字符串标签=labels.get(条目);
if(label==null){
返回“”;
}
退货标签;
}
}
然后,您可以创建如下标签:

import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.utils.ViewPortHandler;

import java.util.Map;

public class MapValueFormatter implements IValueFormatter {

    private final Map<Entry, String> labels;

    public MapValueFormatter(Map<Entry, String> labels) {
        this.labels = labels;
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        String label = labels.get(entry);
        if (label == null) {
            return "";
        }

        return label;
    }
}
Map<Entry,String> labels = new HashMap<>();
for (BubbleEntry bubbleEntry : dataSet.getValues()) {
    labels.put(bubbleEntry, generateRandomString());
}
dataSet.setValueFormatter(new MapValueFormatter(labels));
Map labels=newhashmap();
对于(BubbleEntry BubbleEntry:dataSet.getValues()){
plates.put(bubbleEntry,generateRandomString());
}
setValueFormatter(新的MapValueFormatter(标签));
结果如下所示:

import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.utils.ViewPortHandler;

import java.util.Map;

public class MapValueFormatter implements IValueFormatter {

    private final Map<Entry, String> labels;

    public MapValueFormatter(Map<Entry, String> labels) {
        this.labels = labels;
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        String label = labels.get(entry);
        if (label == null) {
            return "";
        }

        return label;
    }
}
Map<Entry,String> labels = new HashMap<>();
for (BubbleEntry bubbleEntry : dataSet.getValues()) {
    labels.put(bubbleEntry, generateRandomString());
}
dataSet.setValueFormatter(new MapValueFormatter(labels));


我相信你能做得更好。祝你好运

就像我们设置图表的粒度一样。我想再问一个问题。如何在气泡中显示文本(文本+y轴值)?@Mubashar如果答案有帮助,您能接受吗?(回答旁边的绿色勾号)接受,因为它有效,我以前在任何地方都没有找到这个解决方案。@Mubashar感谢接受。要显示(文本+y轴值),只需将代码更改为:
returnlabel+value您可以发送任何有用的链接吗?我有问题。当我硬编码条目时,它工作正常。但当我从arrayList和add-in bar条目中获取时。它显示不正确,并且未与x轴标签对齐。