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

时间:2017-03-17 16:09:22

标签: android charts bar-chart mpandroidchart

我正在制作图表并且工作正常。我正在使用MPChart库。它显示每个条形顶部的准确计算值。在这里我们可以看到条形顶部显示的值是精确的条形限制。

enter image description here

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

enter image description here

请让我知道如何实现这一目标。

1 个答案:

答案 0 :(得分:2)

您可以使用ValueFormatter执行此操作。您只需编写一个实现此接口的类并覆盖该方法:

eventStatus == 1 0r 2

在方法内部,将实际值转换为您想要显示的值所需的逻辑。例如,以下 if eventSegCtrl.selectedSegmentIndex == 0 { myEventCell.eventLabel.text = self.eventScheduleOnc[indexPath.row].eventNameOnc let eventDesc = self.eventScheduleOnc[indexPath.row].eventDecOnc let eventStatus = eventDesc?.eventStatus if eventStatus == 1 { myEventCell.eventLabel.textColor = UIColor.green do { //Create fetch request with NSSortDescriptor let request = NSFetchRequest<NSFetchRequestResult>(entityName: "EventScheduleOnc") let sort = NSSortDescriptor(key: "indexOnc", ascending: true) request.sortDescriptors = [sort] // Acess the last objects index let lastRowIndex = eventTitleOnc.count - 1 print(lastRowIndex) request.setValue(lastRowIndex, forKey: "indexOnc") // Save it to core data try context.save() _ = try context.execute(request) } catch{} } 只是将实际图表值乘以10:

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

您可以像这样使用它:

ValueFormatter

您可能需要:

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