gpt4 book ai didi

swift - 水平条形图标签

转载 作者:可可西里 更新时间:2023-11-01 01:20:26 24 4
gpt4 key购买 nike

我最近将我的一个客户项目从 Swift2 和 iOS-charts 2 升级到 Swift3 和 iOS-charts 3。

经过几天的手动调整后,大部分代码都按预期运行,但是,我的水平条形图仍然存在问题。

图表用于显示为:

enter image description here

图表现在显示为:

enter image description here

图表核心代码:

func drawMarginChart() {
let labels = marginObject!.getLabelsForChart()
let values = marginObject!.getValuesForChart()

var dataEntries = [ChartDataEntry]()

for i in 0..<values.count {
let entry = BarChartDataEntry(x: Double(i), y: values[i])
dataEntries.append(entry)
}

let barChartDataSet = BarChartDataSet(values: dataEntries, label: "")
barChartDataSet.drawValuesEnabled = false
barChartDataSet.colors = ChartColorTemplates.joyful()

let barChartData = BarChartData(dataSet: barChartDataSet)
barChartMargins.data = barChartData
barChartMargins.legend.enabled = false

barChartMargins.xAxis.valueFormatter = IndexAxisValueFormatter(values: labels)
barChartMargins.xAxis.granularityEnabled = true
barChartMargins.xAxis.granularity = 1

barChartMargins.animate(xAxisDuration: 3.0, yAxisDuration: 3.0, easingOption: .easeInOutBounce)
}

我希望找到的是:

1) 如何让标签显示在图表上的每个柱上

2) 如何让图表自动调整大小以显示标签

如果可以解决这些其他问题,那就太好了,但我们愿意在没有这些问题的情况下发货:

1) 如何去除图表左侧的网格线重叠?

2) 如何防止图表底部被截断?

我已尝试调整我在此处和其他网站上找到的每个帖子的许多图表属性,但是,没有任何方法可以解决问题。我和我的客户将非常感谢任何使图表看起来像旧版本的帮助。

最佳答案

我进行了一些测试,发现当有 8 个值和标签时,一切正常。当有 9 个或更多的值和标签时,只显示一半的标签。您可以使用以下设置屏幕可见值的数量:

 barChartMargins.setVisibleXRange(minXRange: 8.0, maxXRange: 8.0)

这意味着如果您的值多于 maxXRange,图表将可以滚动。

并通过使用此代码进行缩放,您将看到所有标签:

 barChartMargins.zoom(scaleX: 1.1, scaleY: 1.0, x: 0, y: 0)

通过向右和向左缩放,您会看到所有标签都出现在某些情况下,但不是全部(并且不是在您的情况下有 10 个标签)。但是,如果您首先将 maxXRange 设置为 8 并像我在示例中那样允许滚动,它就会起作用。 enter image description here这是我使用的完整代码(使用 iPhone 5 和 6Plus 测试),最后一行解决了截断问题:

 func drawMarginChart() {

let values = [1000, 2000, 3000, 5000, 7000, 8000, 15000, 21000, 22000, 35000]
let labels = ["Blue Yonder Airlines", "Aaron Fitz Electrical", "Central Communications", "Magnificent Office Images", "Breakthrough Telemarke", "Lawrence Telemarketing", "Vancouver Resort Hotels", "Mahler State University", "Astor Suites", "Plaza One"]



var dataEntries = [ChartDataEntry]()

for i in 0..<values.count {
let entry = BarChartDataEntry(x: Double(i), y: Double(values[i]))

dataEntries.append(entry)
}

let barChartDataSet = BarChartDataSet(values: dataEntries, label: "")
barChartDataSet.drawValuesEnabled = false
barChartDataSet.colors = ChartColorTemplates.joyful()

let barChartData = BarChartData(dataSet: barChartDataSet)
barChartMargins.data = barChartData
barChartMargins.legend.enabled = false

barChartMargins.xAxis.valueFormatter = IndexAxisValueFormatter(values: labels)
barChartMargins.xAxis.granularityEnabled = true
barChartMargins.xAxis.granularity = 1

barChartMargins.animate(xAxisDuration: 3.0, yAxisDuration: 3.0, easingOption: .easeInOutBounce)

barChartMargins.chartDescription?.text = ""


barChartMargins.zoom(scaleX: 1.1, scaleY: 1.0, x: 0, y: 0)

let rightAxis = barChartMargins.rightAxis
rightAxis.drawGridLinesEnabled = false

let leftAxis = barChartMargins.leftAxis
leftAxis.drawGridLinesEnabled = false

let xAxis = barChartMargins.xAxis
xAxis.drawGridLinesEnabled = false
barChartMargins.setVisibleXRange(minXRange: 8.0, maxXRange: 8.0)

barChartMargins.setExtraOffsets (left: 0, top: 20.0, right:0.0, bottom: 20.0)



}

顺便说一句。我没有遇到标签在屏幕外的问题,但这可能与图 TableView 的大小和约束有关,或者可能需要使用 barChartMargins.zoom 进行更多缩放

关于swift - 水平条形图标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44206088/

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