android - 如何在栏顶部显示不同的值

标签 android charts bar-chart mpandroidchart

我正在研究图表,它们工作得很好。我正在使用 MPChart 库。它在每个条形的顶部显示准确的计算值。在这里我们可以看到柱顶部显示的值是准确的柱限制。

enter image description here

现在我有另一个要求,我必须在条形顶部显示与其限制值不同的另一个值

enter image description here

请告诉我如何才能实现这一目标。

最佳答案

您可以使用 ValueFormatter 来执行此操作。您只需编写一个实现此接口(interface)的类并重写该方法即可:

String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler)

将实际值转换为要显示的值所需的逻辑放入方法内。例如,以下 ValueFormatter 只是将实际图表值乘以 10:

public class TenTimesValueFormatter implements ValueFormatter {
    @Override
    protected String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        return Integer.toString(value * 10);
    }
}

你可以像这样使用它:

barData.setValueFormatter(new TenTimesValueFormatter());

您可能需要:

mChart.getXAxis().setGranularity(1);
mChart.getXAxis().setGranularityEnabled(true);

更新:如果您需要一个仅从支持数组中获取值的ValueFormatter,您可以执行以下操作:

public class IndexValueFormatter implements IValueFormatter {

    private final String [] values;

    public IndexValueFormatter(String[] values) {
        this.values = values;
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        int index = Math.round(value);

        if (index < 0 || index >= values.length || index != (int)value)
            return "";

        return values[index];
    }
}

关于android - 如何在栏顶部显示不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42862282/

相关文章:

java - 具有多个类别的箱线图的 JFreeChart 缩放

javascript - 在 D3 饼图中添加工具提示的问题

bar-chart - Pentaho CDE 条形图显示

date - NVD3 线加条形图 X 轴刻度错误对齐

java - Document.getString 没有给出输出 (Firestore)

android - cordova-plugin-contacts - 在 android M 上的联系人选择应用程序崩溃

android - MPAndroidChart - 是否可以为不同的数据集设置不同的markerView?

android - 从一个 Activity 中获取文本并将其设置到另一个 Activity 中

angularjs - nvd3 中的事件处理

charts - 谷歌图表 - 改变条形图中条形的方向