我正在将mpchart用于android v3.0.3版本。我试图相对于日期设置“自定义x轴”值,但无法获得所需的结果。
我的条条目的值如下:
[Entry, x: 20.0 y: 21.0, Entry, x: 23.0 y: 22.0, Entry, x: 17.0 y: 23.0, Entry, x: 11.0 y: 24.0, Entry, x: 61.0 y: 26.0, Entry, x: 39.0 y: 27.0, Entry, x: 19.0 y: 28.0, Entry, x: 18.0 y: 29.0, Entry, x: 16.0 y: 30.0, Entry, x: 13.0 y: 0.0, Entry, x: 11.0 y: 2.0, Entry, x: 12.0 y: 3.0, Entry, x: 39.0 y: 4.0, Entry, x: 25.0 y: 5.0, Entry, x: 16.0 y: 6.0, Entry, x: 29.0 y: 7.0, Entry, x: 30.0 y: 8.0, Entry, x: 48.0 y: 9.0, Entry, x: 18.0 y: 10.0, Entry, x: 36.0 y: 11.0, Entry, x: 42.0 y: 12.0, Entry, x: 46.0 y: 13.0, Entry, x: 70.0 y: 14.0, Entry, x: 48.0 y: 15.0, Entry, x: 14.0 y: 16.0, Entry, x: 23.0 y: 17.0, Entry, x: 16.0 y: 18.0, Entry, x: 13.0 y: 19.0, Entry, x: 27.0 y: 20.0, Entry, x: 7.0 y: 21.0, Entry, x: 25.0 y: 23.0, Entry, x: 9.0 y: 24.0]
我要在x轴上设置的条目的期望值如下:
[22 May , 23 May , 24 May , 25 May , 27 May , 28 May , 29 May , 30 May , 31 May , 01 Jun , 03 Jun , 04 Jun , 05 Jun , 06 Jun , 07 Jun , 08 Jun , 09 Jun , 10 Jun , 11 Jun , 12 Jun , 13 Jun , 14 Jun , 15 Jun , 16 Jun , 17 Jun , 18 Jun , 19 Jun , 20 Jun , 21 Jun , 22 Jun , 24 Jun , 25 Jun ]
设置自定义X轴值的代码如下:
public class CustomXAxisValueFormatter implements IAxisValueFormatter {
ArrayList<String> mIndexForXaxis;
public CustomXAxisValueFormatter(ArrayList<String> indexForXaxis){
this.mIndexForXaxis = indexForXaxis;
}
@Override
public String getFormattedValue(float value, AxisBase axis) {
AppLogger.i("Print index values: "+mIndexForXaxis);
String returnIndex = null;
for(int i = 0 ; i < mIndexForXaxis.size(); i++){
AppLogger.i("Print index values: "+mIndexForXaxis.get(i));
returnIndex = mIndexForXaxis.get(i);
}
return returnIndex;
}
}
我将上面的日期数组作为indexForXaxis传递给该类,例如5月22日等。
但是,所反映的图形如下
我了解其仅从索引列表中获取最后一个值。那么反映日期的正确方法是什么?
答案 0 :(得分:1)
在科特林:
val labels = mutableListOf<String>()
labels.add("1 Jan")
labels.add("2 Jan")
labels.add("3 Apr")
labels.add("5 Jun")
labels.add("10 Des")
val datas = mutableListOf<Entry>()
datas.add(Entry(0f, 20f))
datas.add(Entry(1f, 40f))
datas.add(Entry(2f, 30f))
datas.add(Entry(3f, 70f))
datas.add(Entry(4f, 20f))
val xAxis = linechart.getXAxis()
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawAxisLine(true);
xAxis.setDrawGridLines(false);
xAxis.setDrawLabels(true);
xAxis.labelCount = labels.size // important
xAxis.setSpaceMax(0.5f) // optional
xAxis.setSpaceMin(0.5f) // optional
xAxis.valueFormatter = object : ValueFormatter() {
override
fun getFormattedValue(value: Float): String {
// value is x as index
return labels[value.toInt()]
}
}
答案 1 :(得分:0)
尝试一下。希望此解决方案对您有帮助,
101
动态日期格式,
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxisPosition.BOTTOM);
xAxis.setTextSize(10f);
xAxis.setTextColor(Color.RED);
xAxis.setDrawAxisLine(true);
xAxis.setDrawGridLines(false);