如何在 MPAndroidChart 中添加 x 轴作为日期时间标签?

Sha*_*n M 6 android mpandroidchart

我在我的项目中为温度报告实现了折线图(MPAndroidChart 库)。在 X 轴上应该绘制日期时间,并且应该绘制 Y 轴温度。

我只是在 X 轴标签中将日期时间添加为字符串,但它已折叠。所以请任何人指导我。

Ben*_*Ben 6

使用 MPAndroidChart 3.0+ 版本:

将格式化程序设置为 x 轴(在下面创建):

// Formatter to adjust epoch time to readable date
lineChart.xAxis.setValueFormatter(new LineChartXAxisValueFormatter());
Run Code Online (Sandbox Code Playgroud)

创建一个新类 LineChartXAxisValueFormatter:

public class LineChartXAxisValueFormatter extends IndexAxisValueFormatter {

    @Override
    public String getFormattedValue(float value) {

        // Convert float value to date string
        // Convert from seconds back to milliseconds to format time  to show to the user
        long emissionsMilliSince1970Time = ((long) value) * 1000;

        // Show time in local version
        Date timeMilliseconds = new Date(emissionsMilliSince1970Time);
        DateFormat dateTimeFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault());

        return dateTimeFormat.format(timeMilliseconds);
    }
}
Run Code Online (Sandbox Code Playgroud)

当条目添加到时,chartDataArray它们是以秒为单位添加的,而不是以毫秒为单位,以避免作为浮点输入(即毫秒除以 1000)时出现的潜在精度问题。

chartDataArray.add(new Entry(secondsSince1970Float, yValueFloat));
Run Code Online (Sandbox Code Playgroud)

快乐编码!


Sag*_*til 5

请尝试以下操作。

设置 X 轴

 XAxis xAxis = mChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setValueFormatter(new MyXAxisValueFormatter());
        xAxis.setLabelsToSkip(0);
Run Code Online (Sandbox Code Playgroud)

创建一个新的类MyXAxisValueFormatter工具XAxisValueFormatter

public class MyXAxisValueFormatter implements XAxisValueFormatter {

@Override
public String getXValue(String dateInMillisecons, int index, ViewPortHandler viewPortHandler) {
    try {

        SimpleDateFormat sdf = new SimpleDateFormat("dd MMM");
        return sdf.format(new Date(Long.parseLong(dateInMillisecons)));

    } catch (Exception e) {

        return  dateInMillisecons;
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助