我正在尝试将饼图正确地拟合到比图表高得多的 View 中。问题是我想在图表底部包含一个垂直的图例列表,这使得实际图表的高度动态变化。如果数据集中有太多条目,则图表底部的更多图例行不会显示。
是否有一种实用的方法来获取图表的“实际”或“渲染”高度,以便我可以将ieChart.frame.height设置为该值?或者,如何调整图表的高度,使其包含包括图例在内的所有内容?
@IBOutlet weak var pieChart: PieChartView!
var aDataEntry = PieChartDataEntry(value:30)
var bDataEntry = PieChartDataEntry(value:25)
var dataEntries = [PieChartDataEntry]()
override func viewDidLoad() {
super.viewDidLoad()
pieChart.chartDescription?.text = "A test"
aDataEntry.label = "A"
bDataEntry.label = "B"
dataEntries = [aDataEntry, bDataEntry]
updateChartData()
// Do any additional setup after loading the view.
}
func updateChartData() {
let chartDataSet = PieChartDataSet(values: dataEntries, label:nil)
let chartData = PieChartData(dataSet: chartDataSet)
var colours:[UIColor] = []
for i in 1..<10 {
colours.append(UIColor(named: "Colour" + String(i))!)
}
chartDataSet.colors = colours
pieChart.data = chartData
pieChart.usePercentValuesEnabled = true
pieChart.legend.orientation = .vertical
pieChart.notifyDataSetChanged()
print(pieChart.frame.height)
}
最佳答案
添加/设置图例后,您只需调用pieChartView.notifyDataSetChanged()
,否则,您的图例将消失在 View 中。
这是示例:
pieChartView.legend.verticalAlignment = .bottom
pieChartView.legend.horizontalAlignment = .center
pieChartView.legend.orientation = .vertical
pieChartView.notifyDataSetChanged()
编辑 1:要快速解决问题,请在调用 PieChartDataSet 时使用空字符串而不是 nil。
let chartDataSet = PieChartDataSet(values: dataEntries, label:"")
关于charts - ios-charts如何调整饼图高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53035947/