iOS图表库-如何处理X轴重复值 [英] iOS Charts Library - How to handle X-Axis duplicate values

查看:72
本文介绍了iOS图表库-如何处理X轴重复值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经使用@danielgindi的Charts库为我的iOS应用程序生成了图形.似乎一切正常,但我们面临着X轴数据复制的问题.

I have used Charts library by @danielgindi to generate the graph for my iOS application. All seems works fine but we are facing issue with X-Axis data duplication.

以(X轴值,Y轴值)的图形输入数据

("29/29/2017/00:00:00","2.7")

("29/03/2017 00:00:00","2.7")

(" 29/03/2017 00:00:00," 2.4)

("29/03/2017 00:00:00","2.4")

("29/29/2017/00:10:00","1.3")

("29/03/2017 00:10:00","1.3")

(" 29/03/2017 00:10:00," 1.5)

("29/03/2017 00:10:00","1.5")

("29/29/2017/00:20:00","1.8")

("29/03/2017 00:20:00","1.8")

....

....

....

(" 29/03/2017 01:00:00," 1.2)

("29/03/2017 01:00:00","1.2")

(" 29/03/2017 09:00:00," 2.7)

("29/03/2017 09:00:00","2.7")

("29/29/2017/09:10:00",-10.8")

("29/03/2017 09:10:00","-10.8")

....

....

....

("29/29/2017/13:10:00","3.9")

("29/03/2017 13:10:00","3.9")

("29/29/2017/13:20:00",-.8")

("29/03/2017 13:20:00","-.8")

(" 29/03/2017 13:20:00," 5.9"

("29/03/2017 13:20:00","5.9"

其中X轴值为日期时间,Y轴值为与该日期时间相关联的Double值.

Where X-Axis value is date time and Y Axis value is Double value associated to that date-time.

我已将以下代码用于格式化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轴值.我应该如何解决这个问题?

But when I zoom the graph it has multiple values for X-Axis. How should I resolved this issues?

X轴值的预期输出:

最初-[12:00 AM,03:00 AM,06:00 AM,09:00 AM,12:00 PM,03:00 PM,06:00 PM,09:00 PM,12:00 PM]

Initially - [12:00 AM, 03:00 AM, 06:00 AM, 09:00 AM, 12:00 PM, 03:00 PM, 06:00 PM, 09:00 PM, 12:00 PM]

缩放时-[12:00 AM,01:00 AM,02:00 AM,03:00 AM ...... 12:00 PM]

When Zoom - [12:00 AM, 01:00 AM, 02:00 AM, 03:00 AM ...... 12:00 PM]

再次放大-[12:00 AM,12:30 AM,01:00 AM,01:30 AM、02:00 AM,02:30 AM,03:00 AM ...... 12:00 PM]

Again Zoom - [12:00 AM, 12:30 AM, 01:00 AM, 01:30AM, 02:00 AM, 02:30 AM, 03:00 AM ...... 12:00 PM]

再次再次放大-[12:00 AM,12:10 AM,12:20 AM,12:30 AM ...... 12:00 PM]

Again Again Zoom - [12:00 AM, 12:10 AM, 12:20 AM, 12:30 AM ...... 12:00 PM]

示例GIF文件:

Sample GIF file:

iOS图表库链接: https://github.com/danielgindi/Charts

iOS Charts Library Link: https://github.com/danielgindi/Charts

推荐答案

如iOS图表库文档中所述:

As mentioned in iOS-Charts library documentation:

为true时,轴标签由 granularity 属性控制.

为false时,轴值可能会重复.

When false, axis values could possibly be repeated.

...

@property(非原子)BOOL粒度启用;

和:

轴值之间的最小间隔.

The minimum interval between axis values.

这可以避免在放大时重复标签.

This can be used to avoid label duplicating when zooming in.

默认:1.0

@属性(非原子)双粒度;

因此,我非常确定这些行将为您完成工作:

So Im pretty sure that those lines will do the work for you:

[yourChart.xAxis setGranularityEnabled:YES];

[yourChart.xAxis setGranularity:1.0];

这篇关于iOS图表库-如何处理X轴重复值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆