水平条形图未移动到 X
Horizontal Bar chart not moving to X
今天我终于让我的自动布局约束动画开始工作,之后我注意到,水平条形图的行为不像以前那样。
我有一个水平条形图,其中数据按降序排列(最多的应该在最上面)但问题是,每当我尝试使用 moveViewToX 将视图移回第一个条目(最大值)时图表只是不做任何事情它总是显示最后添加的条目,所以它滚动到最后。
我想让它从顶部开始,我的意思是从第一个条目开始。
我试过moveViewToX函数,还是没有效果。
这是设置数据的代码:
let sortedData = chartData.sorted(by: { [=10=].money < .money })
for i in 0..<sortedData.count {
let dataEntry = BarChartDataEntry(x: Double(i), y: Double(sortedData[i].money))
dataEntries.append(dataEntry)
labels2.append(sortedData[i].Name)
}
图表的设置如下:
let chartDataSet = BarChartDataSet(entries: dataEntries, label: "kategoriak")
chartDataSet.colors = [UIColor.red]
let kerekitöFormatter = KerekitöNumberFormatter(showZeros: false, showMoney: true)
chartDataSet.valueFormatter = kerekitöFormatter
chartDataSet.valueFont = chartDataSet.valueFont.withSize(10)
chartDataSet.valueTextColor = .white
let horChartData = BarChartData(dataSet: chartDataSet)
horizontalChartView.xAxis.valueFormatter = BarChartXaxisFormatter(labels: labels2, truncMode: true)
horizontalChartView.data = horChartData
horizontalChartView.leftAxis.axisMinimum = 0
horizontalChartView.leftAxis.valueFormatter = YAxisValueFormatter()
horizontalChartView.legend.enabled = false
horizontalChartView.xAxis.labelPosition = .bottom
horizontalChartView.setVisibleXRangeMaximum(5)
horizontalChartView.moveViewToX(Double(sortedData.count))
horizontalChartView.drawValueAboveBarEnabled = false
horizontalChartView.xAxis.granularityEnabled = true
//horizontalChartView.setExtraOffsets (left: 0.0, top: 0.0, right:0.0, bottom: 0.0)
horizontalChartView.xAxis.granularity = 1
horizontalChartView.doubleTapToZoomEnabled = false
if #available(iOS 13.0, *) {
horizontalChartView.backgroundColor = .systemBackground
horizontalChartView.xAxis.labelTextColor = .label
horizontalChartView.leftAxis.labelTextColor = .label
horizontalChartView.gridBackgroundColor = .label
}
let rightAxis = horizontalChartView.rightAxis
rightAxis.drawGridLinesEnabled = false
rightAxis.enabled = false
希望有人能帮忙。
期待您的回答。
经过数小时的研究和尝试,我弄明白了。出于某种奇怪的原因,如果您使用 moveViewToX 它不会响应,但是当您使用 moveViewTo(float xValue, float yValue, AxisDependency axis) 时它会起作用。
所以,简而言之,我在设置图表的最后添加了这行代码。
horizontalChartView.moveViewTo(xValue: Double(sortedData.count), yValue: sortedData.first!.money, axis: .left)
希望这对你以后有所帮助!
今天我终于让我的自动布局约束动画开始工作,之后我注意到,水平条形图的行为不像以前那样。
我有一个水平条形图,其中数据按降序排列(最多的应该在最上面)但问题是,每当我尝试使用 moveViewToX 将视图移回第一个条目(最大值)时图表只是不做任何事情它总是显示最后添加的条目,所以它滚动到最后。
我想让它从顶部开始,我的意思是从第一个条目开始。
我试过moveViewToX函数,还是没有效果。 这是设置数据的代码:
let sortedData = chartData.sorted(by: { [=10=].money < .money })
for i in 0..<sortedData.count {
let dataEntry = BarChartDataEntry(x: Double(i), y: Double(sortedData[i].money))
dataEntries.append(dataEntry)
labels2.append(sortedData[i].Name)
}
图表的设置如下:
let chartDataSet = BarChartDataSet(entries: dataEntries, label: "kategoriak")
chartDataSet.colors = [UIColor.red]
let kerekitöFormatter = KerekitöNumberFormatter(showZeros: false, showMoney: true)
chartDataSet.valueFormatter = kerekitöFormatter
chartDataSet.valueFont = chartDataSet.valueFont.withSize(10)
chartDataSet.valueTextColor = .white
let horChartData = BarChartData(dataSet: chartDataSet)
horizontalChartView.xAxis.valueFormatter = BarChartXaxisFormatter(labels: labels2, truncMode: true)
horizontalChartView.data = horChartData
horizontalChartView.leftAxis.axisMinimum = 0
horizontalChartView.leftAxis.valueFormatter = YAxisValueFormatter()
horizontalChartView.legend.enabled = false
horizontalChartView.xAxis.labelPosition = .bottom
horizontalChartView.setVisibleXRangeMaximum(5)
horizontalChartView.moveViewToX(Double(sortedData.count))
horizontalChartView.drawValueAboveBarEnabled = false
horizontalChartView.xAxis.granularityEnabled = true
//horizontalChartView.setExtraOffsets (left: 0.0, top: 0.0, right:0.0, bottom: 0.0)
horizontalChartView.xAxis.granularity = 1
horizontalChartView.doubleTapToZoomEnabled = false
if #available(iOS 13.0, *) {
horizontalChartView.backgroundColor = .systemBackground
horizontalChartView.xAxis.labelTextColor = .label
horizontalChartView.leftAxis.labelTextColor = .label
horizontalChartView.gridBackgroundColor = .label
}
let rightAxis = horizontalChartView.rightAxis
rightAxis.drawGridLinesEnabled = false
rightAxis.enabled = false
希望有人能帮忙。 期待您的回答。
经过数小时的研究和尝试,我弄明白了。出于某种奇怪的原因,如果您使用 moveViewToX 它不会响应,但是当您使用 moveViewTo(float xValue, float yValue, AxisDependency axis) 时它会起作用。
所以,简而言之,我在设置图表的最后添加了这行代码。
horizontalChartView.moveViewTo(xValue: Double(sortedData.count), yValue: sortedData.first!.money, axis: .left)
希望这对你以后有所帮助!