gpt4 book ai didi

ios - 如何设置自定义 X 轴标签间隔?

转载 作者:行者123 更新时间:2023-11-29 13:56:36 25 4
gpt4 key购买 nike

我正在使用 https://github.com/danielgindi/Charts

我想要发生的事情:

我希望图表有 2 个带有自定义标签值的 x 轴刻度/标签。我的 x 轴值是日期/时间(我使用基于 IAxisValueFormatter 的 DateTimeFormatter)。例如,如果我的 x 轴最小值是下午 1:00,x 轴最大值是下午 4:00,标签计数设置为 2,我如何自定义我想要的标签值?我希望此场景中的值是 标签 1 的下午 2:00 和标签 2 的下午 3:00。这个库可以吗?

实际发生了什么:

它在图表上显示 2 个 x 轴标签,值为 label 1 = 2:40 PMlabel 2 = 3:46

注意:

我每分钟添加一个新的数据点,所以我从一个空数据集开始,每分钟一次我将条目添加到数据集,如下所示:

...
let entry = ChartDataEntry(x: point.x, y: point.y)
lineChartDataSet?.addEntryOrdered(entry)
lineChartData?.notifyDataChanged()
view.notifyDataSetChanged()
view.reloadInputViews()

这是设置 xAxis 标签计数和最小值/最大值的代码:

xAxis.labelCount = 2
xAxis.axisMinimum = 1553274000.0 //double value equivalent of 1 pm (timeIntervalSince1970)
xAxis.axisMaximum = 1553284800.0 //double value equivalent of 4 pm (timeIntervalSince1970)

这是我用于显示日期和时间的轴值格式化程序:

public class GraphDateTimeFormatter: NSObject, IAxisValueFormatter {
private let dateFormatterHourMin = DateFormatter()
private let dateFormatterMonthDay = DateFormatter()

override init() {
super.init()
dateFormatterHourMin.dateFormat = "hh mm a"
dateFormatterMonthDay.dateFormat = "MMM dd"
}

public func stringForValue(_ value: Double, axis: AxisBase?) -> String {
let time = dateFormatterHourMin.string(from: Date(timeIntervalSince1970: value))
let monthDay = dateFormatterMonthDay.string(from: Date(timeIntervalSince1970: value))
return "\(time)\n\(monthDay)"
}

最佳答案

更新标签计数并将自定义粒度设置为十二进制倍数,因为时间是在 base-12 系统中计算的,但图表默认遵循 base-10 系统。

试试这个:

xAxis.labelCount = 4
xAxis.granularity = 3600

注意事项:

  • 3600 基本上是 60*60,即一个小时的秒数
    • 根据您给定的下午 1 点到 4 点的范围,您想要以 1 小时为间隔显示下午 2 点和下午 3 点标签
  • labelCount 影响粒度
    • 我们需要将其保持在 4,因为如果 labelCount 保持在 2,则最小 granularity 必须 >= 5400,即 1.5 小时的间隔为下午 1 点,下午 2:30、4:00,这与您的预期不符
      • 为什么是 5400?因为 1553284800 - 1553274000 = 1080010800/2 = 5400

关于ios - 如何设置自定义 X 轴标签间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55305459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com