我使用@danielgindi的Charts库为我的iOS应用程序生成图形。一切似乎都很好,但我们正面临着X轴数据复制的问题。
图形的输入数据(X轴值,Y轴值)
("29/03/2017 00:00:00","2.7")
("29/03/2017 00:00:00","2.4")
("29/03/2017 00:10:00","1.3")
("29/03/2017 00:10:00","1.5")
("29/03/2017 00:20:00","1.8")
....
....
....
("29/03/2017 01:00:00","1.2")
("29/03/2017 09:00:00","2.7")
("29/03/2017 09:10:00","-10.8")
....
....
....
("29/03/2017 13:10:00","3.9")
("29/03/2017 13:20:00","-.8")
("29/03/2017 13:20:00","5.9"
其中X轴值是日期时间,Y轴值是与该日期时间关联的Double值。
我使用以下代码来格式化X轴
class ChartStringFormatter: NSObject, IAxisValueFormatter {
public func stringForValue(_ value: TimeInterval, axis: AxisBase?) -> String {
let date = Date(timeIntervalSince1970: value)
return date.toString(format: "hh:mm a")
}
}
但是当我缩放图形时,它有多个X轴值。我该如何解决这个问题?
X轴值的预期输出:
最初 - [上午12:00,上午03:00,上午06:00,上午09:00,中午12:00,下午03:00,下午06:00,下午9:00,中午12:00]
缩放时 - [12:00 AM,01:00 AM,02:00 AM,03:00 AM ...... 12:00 PM]
再次缩放 - [上午12:00,上午12:30,11:00 AM,01:30 AM,02:00 AM,02:30 AM,03:00 AM ...... 12:00 PM]
再次放大 - [上午12:00,上午12:10,上午12:20,上午12:30 ......下午12:00]
如iOS-Charts库文档中所述:
如果为true,则轴标签由
granularity
属性控制。如果为false,则可能会重复轴值。
...
@property (nonatomic) BOOL granularityEnabled;
和:
轴值之间的最小间隔。
这可用于避免放大时标签重复。
默认值:1.0
@property (nonatomic) double granularity;
所以我很确定这些线将为您完成工作:
[yourChart.xAxis setGranularityEnabled:YES];
[yourChart.xAxis setGranularity:1.0];