android - MPAndroidChart x 日期值重复问题
问题描述
我正在实现将运动时间按日期的变化显示为图表的功能。
但有一个问题。
在解释问题之前,我将简要解释一下我的代码。
当用户输入日期时,该日期存储在数据库中并按日期输出。
例如,当用户输入 2020/06/26 时,在图表上显示为 06/26。
现在我将解释这个问题。
图的 x 值是重叠的。07/01 不会在 06/30 之后立即出现,而是很远。
我将附上我的代码和执行结果。在此处输入图像描述
xAxis.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float value) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyMMdd");
Date date = null;
try {
date = simpleDateFormat.parse(Float.toString(value));
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat newFormat = new SimpleDateFormat("MM/dd");
String dateString = newFormat.format(date);
return dateString;
}
});
解决方案
很难从您提供的代码中分辨出来。但最有可能的是,问题不在于 ValueFormatter,而在于您使用的实际 x 值。yyMMdd 格式的 x 值很可能不是您想要的,因为例如 2020-04-01 和 2020-04-02 之间的差异与 2020-03-31 和 2020-04-01 之间的差异不同,事件如果它应该完全相同(1天)。您应该对 x 值使用另一种表示形式,例如“自 1970 年以来的天数”。
然而,这仍然不能解释为什么在 07-01 之后甚至在 08-19 之后显示 06-30。我的猜测是您的条目列表未按升序正确排序。
推荐阅读
- c# - MVC 代码优先方法不使用 DbContext 从表中获取数据
- sql - 如何从 BigQuery 下拉列表中绘制多个日期到 Google Data Studio
- reactjs - 如何访问集合中每个文档中的子集合?
- algorithm - 用于构建堆的改进算法
- c# - 如何在绑定到int属性wpf c#的文本框中放置默认值?
- android - RewardedVideoAd MobileAds.getRewardedVideoAdInstance(this) 已弃用。什么是新的替代方案?
- node.js - Angular 8 - 加载垫模块的单元测试问题
- encryption - HMAC 是否加密原始明文消息?
- javascript - cytoscape.js - 在父节点中添加自定义 svg 图标
- python - 无法在 Robot Framework 中打印日志