Sha*_*n M 6 android mpandroidchart
我在我的项目中为温度报告实现了折线图(MPAndroidChart 库)。在 X 轴上应该绘制日期时间,并且应该绘制 Y 轴温度。
我只是在 X 轴标签中将日期时间添加为字符串,但它已折叠。所以请任何人指导我。
使用 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)
快乐编码!
请尝试以下操作。
设置 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)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
15798 次 |
| 最近记录: |