gpt4 book ai didi

swift - 如何使图表始终显示网格线?

转载 作者:行者123 更新时间:2023-11-30 11:30:58 25 4
gpt4 key购买 nike

我正在使用 Charts 3.1.1,但我不知道如何使图表始终显示 x 轴网格线:

enter image description here

在此示例中,我希望图表在 4 月 25 日之后显示 xAxis 网格线和标签,即 4 月 26 日、4 月 27 日、4 月 28 日、4 月 29 日、4 月 30 日、5 月 1 日。

我创建这个类是为了生成足够的日期来填充空白,当我想要显示的后续每一天没有数据点时:

class AxisValuesGenerator: NSObject {
var days: [String]? = []

func generatexAxisDates(liftEvents: [LiftEvent]) -> [String]? {
var dates: [Date] = []
let intervalBetweenDates: TimeInterval = 3600 * 24 // 3600 = 1 hour
let firstDate = (liftEvents.first?.date)! // - intervalBetweenDates
var lastDate = liftEvents.last?.date

if Double(liftEvents.count) < 7 {
let daysToAdd = intervalBetweenDates * Double(7 - liftEvents.count)
lastDate = lastDate?.addingTimeInterval(daysToAdd)
for _ in 0...6 {
dates = self.intervalDates(from: firstDate, to: lastDate!, with: intervalBetweenDates)
}
} else {
dates = self.intervalDates(from: firstDate, to: lastDate!, with: intervalBetweenDates)
}

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM d"

days = dates.map {dateFormatter.string(from: $0)}

return days

}

func intervalDates(from startDate: Date, to endDate:Date, with interval:TimeInterval) -> [Date] {
guard interval > 0 else { return [] }

var dates:[Date] = [startDate]
var currentDate = startDate

while currentDate <= endDate {
currentDate = currentDate.addingTimeInterval(interval)
dates.append(currentDate)
}

return dates
}

它确实生成了我想要的日期:

▿ Optional<Array<String>>   ▿ some : 7 elements
- 0 : "Apr 25"
- 1 : "Apr 26"
- 2 : "Apr 27"
- 3 : "Apr 28"
- 4 : "Apr 29"
- 5 : "Apr 30"
- 6 : "May 1"
- 7 : "May 2"

但图表不显示它们。

如何让图表显示缺失的网格线?

更新:

我尝试设置 setVisibleXRangesetLabelCount (强制),如下所示:

chartView.setVisibleXRange(minXRange: 2.0, maxXRange: 6.0)

let leftAxis = chartView.leftAxis
leftAxis.setLabelCount(7, force: true)

如果我有 6 个或更多值要绘制,图表就会正确呈现。但你可以看到,只有 2 个值我就可以强制线条,但 xAxis 标签是错误的:

enter image description here

最佳答案

数据设置和图 TableView 设置是两个不同的事情。图表为您提供了大量控件来自定义数据的显示方式。

在图 TableView 上尝试类似的操作:

chartView.xAxis.forceLabelsEnabled = true
chartView.xAxis.labelCount = 7

为了显示没有 y 值的 x 标签,我使用了“空”y 值(在我的例子中为 0,但在你的例子中可能是其他值)。为了确保您可以看到正确的 Y 范围,请使用左/右轴参数

chartView.leftAxis.axisMinimum = 5

这对我来说是这样的: enter image description here

关于swift - 如何使图表始终显示网格线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50264640/

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