我正在制作图表并且工作正常。我正在使用MPChart库。它显示每个条形顶部的准确计算值。在这里我们可以看到条形顶部显示的值是精确的条形限制。
现在我有另一个要求,我必须在条形图的顶部显示另一个与其限制值不同的值
请让我知道如何实现这一目标。
答案 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);