Swift Charts饼图添加图例异常:仅显示颜色无文本求助
解决Swift Charts饼图图例仅显示颜色无文本的问题
我帮你排查下问题所在,你现在的代码主要有两个关键点没处理好,导致图例只显示颜色不显示对应文本:
1. ChartDataEntry的参数顺序错误
你创建ChartDataEntry时把数值和索引的位置搞反了,饼图中y参数应该对应要展示的数值,x是类别索引(可选,但顺序不能错),顺序颠倒会影响数据绑定和后续文本关联。
2. 没有给每个数据项绑定图例文本
图例的文本默认来自每个ChartDataEntry的label属性,你之前的代码没有设置这个属性,所以图例只能渲染颜色,无法匹配对应文本。
修正后的完整代码示例
func configure(dataPoints: [String], values: [Double]) { chartIMG.noDataText = "Please Insert Some Data!" var dataEntries: [ChartDataEntry] = [] for i in 0..<dataPoints.count { // 修正x和y的顺序,同时给entry绑定对应文本 let dataEntry = ChartDataEntry(x: Double(i), y: values[i]) dataEntry.label = dataPoints[i] // 这一步是图例显示文本的关键 dataEntries.append(dataEntry) } let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "Symptom...") // 确保图例处于启用状态(默认是启用的,这里可以显式设置避免意外) chartIMG.legend.enabled = true // 可选:调整图例的显示位置,让布局更合理 chartIMG.legend.horizontalAlignment = .center chartIMG.legend.verticalAlignment = .bottom let pieChartData = PieChartData(dataSet: pieChartDataSet) chartIMG.data = pieChartData }
额外替代方案
如果不想给每个entry单独设置label,也可以通过给PieChartDataSet设置valueFormatter来统一关联文本:
pieChartDataSet.valueFormatter = DefaultValueFormatter(formatter: NumberFormatter()) { index, _ in return dataPoints[index] }
这样调整后,图例就会正确显示每个数据项对应的文本啦!
内容的提问来源于stack exchange,提问作者Chris Campbell
相关产品推荐
相关产品推荐

