灵感来源:
https://www.it72.com/thread-12280.htm
怎么用MPAndroidChart ,作者就不废话了,网上有很多基础教程。
这里主要解决自定义x轴显示的问题。
我将x轴分为606024=1440 个点。
当我想在360(6:00),720(12:00),1040(18:00)下方显示多少小时。
写如下代码
xAxis.setLabelCount(5);//标签格数
xAxis.setGranularity(1f);//设置最小间隔,防止当放大时,出现重复标签。
xAxis.setValueFormatter(new ValueFormatter() {
public String getFormattedValue(float value) {
Log.d(TAG, "getFormattedValue: "+ value);
if(value%400 ==0){
return data.get((int) value - (int) (value / 10)).xAxisValue;
}
return data.get((int) value ).xAxisValue;
}
});
value的值,是0,200,400---->1400。到不了我最终的1440点。这样也只能在200,400,600的点自定义x值。没法在任意的点取值。
之后想法,是认为标签个数将1440平均分割了。但是改来改去都不对。
后面找了很多博客。
最后发现是间隔的问题,这个设置间隔将会影响我可以在x轴上的哪个点去配置,
xAxis.setGranularity(360f);//设置最小间隔,防止当放大时,出现重复标签。
xAxis.setLabelCount(5);
xAxis.setValueFormatter(new ValueFormatter() {
public String getFormattedValue(float value) {
return data.get((int) value ).xAxisValue;
}
});
这样配置下来,就value值,就是我们的360,720了。
所以 xAxis.setGranularity(360f);这个方法是分刻度。暂且这么理解吧。