我正在尝试使用以下代码在swift 3中设置最小y轴值300:
在viewDidLoad中:
barChartView.noDataText = "No information available."
barChartView.xAxis.labelPosition = .bothSided
barChartView.animate(xAxisDuration: 1.5, yAxisDuration: 1.5)
let ll = ChartLimitLine(limit: 300, label: "Target")
barChartView.rightAxis.addLimitLine(ll)
barChartView.chartDescription?.enabled = false
barChartView.leftAxis.axisMinimum = 300;
updateChartWithData(dataPoints: stringOfDate, values: totalNumber)
func updateChartWithData(dataPoints: [String], values: [Int]) {
var dataEntries: [BarChartDataEntry] = []
for i in 0..<values.count {
let dataEntry = BarChartDataEntry(x: Double(i), y: Double(values[i]))
dataEntries.append(dataEntry)
}
let chartDataSet = BarChartDataSet(values: dataEntries, label: "Total Number")
let chartData = BarChartData(dataSet: chartDataSet)
barChartView.data = chartData
}
但是,当我使用此代码时,最小值不会设置为300,条形图中的条形图不再显示。
答案 0 :(得分:1)
如果我设置
barChartView.leftAxis.axisMinimum = 0
然后,如果我设置:
barChartView.leftAxis.axisMinimum = 13
在第二个图表中,隐藏了所有值小于13的条形图。您没有在代码中显示数据点,但我认为它们必须都低于300,这就是隐藏它们的原因。
答案 1 :(得分:0)
我们无法固定条的最小 y 位置,当最小值非常低且最大值非常高时,我们也面临这个问题,然后条在最小值处的 y 位置下降,所以我找到了这个解决方案我们必须映射小范围内的值,例如最小值 1 和最大值 100000,然后映射范围 1 到 5 中的值。
范围映射公式:
// to convert in to the range of 1 to 5
private func convertRange(value:CGFloat) -> Int{
let newStart:CGFloat = 1.0
let newEnd:CGFloat = 5.0
let originalStart:CGFloat = CGFloat(viewModel.offerMin)
let originalEnd:CGFloat = CGFloat(viewModel.offerMax)
let scale = (newEnd - newStart) / (originalEnd - originalStart);
return Int((newStart + ((value - originalStart) * scale)));
}