gpt4 book ai didi

ios - 是否可以在 swift 中使用 ios-charts 逐个手动设置 lineChart 的 xAxis 值?

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:47 25 4
gpt4 key购买 nike

我正在使用 Swift 语言的 ios-charts API 创建折线图。在 xAxis 上有 mm.dd-day 格式的日期,例如 03.02-Wednesday。在 yAxis 上有双值。我想每个星期一在 xAxis 上显示,没有别的。到目前为止我发现的最佳解决方案是lineChart.xAxis.setLabelsToSkip(6)

这会跳过 6 个标签,但仅当图表数据以星期一的日期开始时它才有效。喜欢这里:what I want

但如果我的图表值以星期二开始,我将只看到星期二标签。:what is not good

我有很多想法我应该怎么做,但我找不到解决方案。我想知道是否有一个函数,什么可以一个一个地设置 xAxis 上的每个标签,所以我可以在 xAxis.values 上使用 for 循环进行迭代,如果是星期一则设置标签可见,如果不是星期一则跳过。像这样:

pseudo:
for i in lineChart.xAxis.values{
if isMonday(){
//set label visible
}else{
//set label invisible
}}

但我真的很感谢所有其他解决我问题的方法。我已经尝试过使用它,但它并没有改变标签:

lineChartView.xAxis.valueFormatter?.stringForXValue(i, original: "Monday", viewPortHandler: cell.lineChartView.viewPortHandler)

我尝试过使用 setValueForKey,但我没有键,只有索引,我想从一个精确的 x 值开始 setLabelsToSkip,但这个函数用于整个图表。

非常感谢您的帮助。

最佳答案

您的图表从星期二开始,它显示星期二,这是设计使然,因为它是第一个值。如果你想总是显示星期一,首先,打电话lineChart.xAxis.setLabelsToSkip(1),这会影响 xAxis.axisLabelModulus,我们必须确保我们可以检查每个 x 值以查看它是否是星期一。

然后,您可以覆盖 x 轴渲染器的 drawLabels(),例如:

public override func drawLabels(context context: CGContext, pos: CGFloat, anchor: CGPoint)
{
... // same as super
for i in self.minX.stride(to: min(self.maxX + 1, xAxis.values.count), by: xAxis.axisLabelModulus)
{
let label = xAxis.values[i]
if (!isMonday(label)) // implement isMonday() yourself
{
continue
}
... // same as super
}

关于ios - 是否可以在 swift 中使用 ios-charts 逐个手动设置 lineChart 的 xAxis 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35753559/

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