Swift ios:在条形图上实现滚动

qvtsj1bj  于 2023-06-21  发布在  Swift
关注(0)|答案(2)|浏览(215)

尝试在Barchart上实现滚动,使用缩放x到2进行放大。但问题是x轴值没有与条形图中心对齐。标签计数基于日和月值。

barChartView.xAxis.axisMinimum = 0.0
barChartView.xAxis.axisMaximum = Double(labels.count - 1)

barChartView.setVisibleXRangeMaximum(Double(labels.count)/2)
or 
barChartView.zoom(scaleX: 2, scaleY: 0, x: 0, y: 0)

对于类似的滚动实现,

barChartView.xAxis.setLabelCount(Int(Double(labels.count)/2), force: true)

请向我们建议正确的方法,以避免x轴值与条形图对齐错误。

n8ghc7c1

n8ghc7c11#

从您的代码中,我假设您的预期行为是

  • 最多显示所有可用条的一半
  • 允许用户无限缩放(最小值= 0)
  • 允许用户滚动(左/右)

如果是这种情况,您将应用以下代码:

barChartView.xAxis.axisMinimum = 0.0
barChartView.xAxis.axisMaximum = Double(labels.count - 1)

barChartView.setVisibleXRangeMaximum(Double(labels.count)/2)
barChartView.xAxis.setLabelCount(Int(Double(labels.count)/2), force: false)

应该避免使用.zoom,因为它设置了多个不需要的值(scaleYxy),因此在滚动时会添加不需要的功能。
force标志设置为false非常重要。如文档中所述,这是导致未对齐的参数:
https://weeklycoding.com/mpandroidchart-documentation/axis-general/
setLabelCount(int count,boolean force):设置y轴的标签数。请注意,这个数字不是固定的(如果force == false),只能近似计算。如果启用了force(true),则会绘制精确的指定标签计数-这可能会导致轴上出现奇数。

kknvjkwl

kknvjkwl2#

要使图表水平滚动并正确调整条形图和y轴标签,请执行以下操作:

let visibleXRange = 6 // Number of values to show in y-Axis
barChartView.xAxis.axisMaximum = Double(xAxisValues.count)
barChartView.setVisibleXRangeMaximum(Double(visibleXRange))
barChartView.xAxis.setLabelCount(visibleXRange, force: false)
barChartView.xAxis.granularity = 1
barChartView.xAxis.labelCount = visibleXRange

确保dragEnabled = true

相关问题