首页 > 解决方案 > iOS 图表折线图缺少最后一个轴标签

问题描述

我用 iOS Charts pod 创建了一个折线图。

首先,我有一个名为 TestBalance 的自定义对象数组,其中包含一个 dateString(转换为 Date)和一个金额(Double)。目前,我已经创建了一个像这样的硬编码数组。

let balanceTestArray : [TestBalance] = [TestBalance(dateString: "01/01/2019", amount: 1920.24), //More elements... , TestBalance(dateString: "28/01/2019", amount: 844.24)]

然后我继续为图形数据创建 ChartDataEntry 数组。

let now = Date().timeIntervalSince1970
let dayInterval: TimeInterval = 3600 * 24

guard let firstDate = balanceTestArray.first else {return}
guard let lastDate = balanceTestArray.last else {return}
guard let firstDateDateValue = firstDate.date else {
  print("No Date")
  return
}
guard let lastDateDateValue = lastDate.date else {
  print("No Date")
  return
}

let from = firstDateDateValue.timeIntervalSince1970
let to = lastDateDateValue.timeIntervalSince1970 + dayInterval
var counter = 0
let values = stride(from: from, to: to, by: dayInterval).map { (x) -> ChartDataEntry in
  let y = balanceTestArray[counter].amount
  counter += 1
  return ChartDataEntry(x: x, y: Double(y))
}

上面的代码似乎工作得很好,像这样绘制所有点和轴标签......

iOS 模拟器的图形截图

我已经通过以下方式设置了我的 xAxis:

let xAxis = lineChartView.xAxis
xAxis.labelPosition = .bottom
xAxis.labelFont = UIFont(name: "Montserrat-Regular", size: 10)!
xAxis.labelTextColor = UIColor(hex: "#A2A2A2FF")!
xAxis.drawAxisLineEnabled = false
xAxis.drawGridLinesEnabled = false
xAxis.granularity = 1.0
xAxis.centerAxisLabelsEnabled = false
xAxis.avoidFirstLastClippingEnabled = true

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE dd"

let xValuesNumberFormatter = ChartXAxisFormatter()
xValuesNumberFormatter.dateFormatter = dateFormatter
xAxis.valueFormatter = xValuesNumberFormatter

这就是我的两个主要问题开始显现的地方。

  1. 第一个问题是轴的标签与数据不匹配,间距对我来说似乎不对?这是放大到数据开头的图片。如何修复间距以最大化数据?我不希望每个值有超过 1 天的标签,而放大时有 2 个当前标签。有什么解决方案吗?

对齐问题

  1. 第二个问题是,在图表的右侧最后一个日期,在这种情况下,1 月 28 日没有显示为标签,但数据显示?如何让标签出现?

标签: swiftchartsios-charts

解决方案


推荐阅读