【发布时间】:2019-03-27 20:46:27
【问题描述】:
我正在使用https://github.com/danielgindi/Charts
我想要发生的事情:
我希望图表有 2 个带有自定义标签值的 x 轴刻度/标签。我的 x 轴值是日期/时间(我使用基于 IAxisValueFormatter 的 DateTimeFormatter)。例如,如果我的 x 轴最小值是下午 1:00,x 轴最大值是下午 4:00,标签计数设置为 2,我如何自定义我想要的标签值?我希望这种情况下的值是 下午 2:00(标签 1)和下午 3:00(标签 2)。 这个库可以做到吗?
实际情况:
它在图表上显示 2 个 x 轴标签,其值为 label 1 = 2:40 PM 和 label 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)"
}
【问题讨论】:
-
你能改写一下这个问题和一些更多的代码吗?我不确定我是否理解您需要帮助的确切问题。
-
我想要始终在图表上显示 2 个标签。我希望能够自定义这些值。我使用 IAxisValueFormatter 以日期/时间显示,但我想显示标签 1 和标签 2 的特定时间值。如何自定义标签 1 和标签 2 的值?
-
您是否使用github.com/danielgindi/Charts 来获取图表功能?可能这是您想在问题中提及的内容(除了您包含的标签)。另外,如果您可以大致了解它的外观以及您希望它的外观,那也很棒(我想我现在了解您的问题,但仍不确定如何回答)
-
@Lauren 分享与
LineChartDataSet和您的IAxisValueFormatter实施相关的代码 -
@NitinAlabur 是的,我正在使用图表库。
标签: ios charts ios-charts