我正在尝试为LineDataSet中的每个Value标签设置不同的颜色。在我的例子中,所呈现的许多值最终将为零。在这种情况下,我想隐藏标签,可能是通过将值的文本颜色设置为透明。
我知道可以通过LineDataSet.setValueTextColor()
方法为所有标签设置一种颜色。但是,这仅为所有标签设置颜色,而不是单个标签。
在下面的屏幕截图中,您可以看到我当前的图表。我需要隐藏零值的标签。
我真的很感激任何提示!
答案 0 :(得分:1)
为什么不使用ValueFormatter
?
expect(page).not_to have_selector("#sort-by")
用法:
public class GreaterThanZeroValueFormatter implements ValueFormatter {
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
if (value > 0) {
return String.valueOf(value);
} else {
return "";
}
}
}
答案 1 :(得分:0)
好吧,虽然我很确定Cory的答案会更快更轻松,但我会发布我在这里为后人所做的事情。我使用MPAndroidChart附带的强大而方便的MarkerView来管理它。
首先,我调用了一个函数来突出显示值大于0的所有点。
private void highlightLinePoints(){
List<Entry> entries = mLineChart.getData().getDataSetByIndex(0).getYVals();
ArrayList<Highlight> indexes = new ArrayList<Highlight>();
int i = 0;
while (i<entries.size()){
if (entries.get(i).getVal()>0 ){
indexes.add(new Highlight(i,0));
}
i++;
}
Highlight[] highlights = new Highlight[indexes.size()];
int e = 0;
while(e<indexes.size()){
highlights[e] = indexes.get(e);
e++;
}
mLineChart.highlightValues(highlights);
}
After that, I subclassed MarkerView following this excellent guide
一旦我使用自定义MarkerView进行了xml布局设置和MarkerView子类化,就像将自定义MarkerView类分配给我的LineChart一样简单。
highlightLinePoints();
dataMarkerView dmv = new dataMarkerView(getContext(), R.layout.data_marker_view);
mLineChart.setMarkerView(dmv);
我的子类与文档中提供的内容基本相同。