【问题标题】:How to remove static string "DataSet" from Legends of Pie Chart for danielgindi/Charts ios?如何从 danielgindi/Charts ios 的饼图图例中删除静态字符串“DataSet”?
【发布时间】:2019-05-29 20:19:29
【问题描述】:

我正在使用适用于 iOS/Swift 的 danielgindi/Charts。如图所示,饼图中显示了一个带有标签“DataSet”的额外图例条目:

当我跟踪时,我发现 PieChartView 图例中的 LegendEntry 数组中有两个条目,即 PieChartView.legend.entries,因为我的数组中只有一个对象。

代码如下:

let dataSet = PieChartDataSet()
    dataSet.drawIconsEnabled = false
    dataSet.setColor(AppColors.selectedMenuItem)
    dataSet.sliceSpace = 3
    dataSet.iconsOffset = CGPoint(x: 0, y: 40)
    dataSet.selectionShift = 5

    var totalRevenuePer:Double = 0.0

    _ = arrRevenue.map({ (objRevenue) -> Void in
        if let percentage = Double(objRevenue.per ?? "0.0"), percentage != 0.0{
            dataSet.append(PieChartDataEntry(value: percentage, label: "\((objRevenue.rev_center_name ?? "") + " " + objRevenue.revenue.currencyString())"))
            totalRevenuePer += percentage
        }
    })

    var colors = AppColors.TenderColors
    if totalRevenuePer < 100{ colors.append(.clear) }
    dataSet.colors = colors

    let data = PieChartData(dataSet: dataSet)
    data.setValueFormatter(PercentageFormatter())
    data.setValueFont(NSUIFont.systemFont(ofSize: 11))
    data.setValueTextColor(.white)

    pieChart.data = data
    pieChart.highlightValue(nil)
    let legend = pieChart.legend
    legend.textColor = .white
    legend.entries.last?.label = ""

    pieChart.animate(yAxisDuration: 1.4, easingOption: .easeInOutQuad)

    // Refresh chart with new data
    pieChart.notifyDataSetChanged()

感谢任何帮助,谢谢。

【问题讨论】:

  • AppColors,arrRevenue, PercentageFormatter 详细信息
  • 我认为问题出在你写label: "\((objRevenue.rev_center_name ?? "") + " " + objRevenue.revenue.currencyString())")的那一行,如果你去掉 ?? “”,会好的。
  • @AtalayAsa,我认为这不是问题,它只是处理可选值。如果值为 nil,则可以防止崩溃。
  • @BenRockey,AppColors 是一个简单的 UIColor 数组,arrRevenue 是填充了从服务器接收到的值的数组(它只有一个值,即 Positronics,如上图所示)和 PercentageFormatter是 IValueFormatter 的子类,IAxisValueFormatter 以百分比格式打印饼图值。

标签: ios swift ios-charts


【解决方案1】:

这是PieChartDataSet的属性

如果不自己设置,默认值为“DataSet”

let dataSet = PieChartDataSet()

// provide your own
dataSet.label = "My Label"

// or, no label
dataSet.label = ""

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2015-02-19
    相关资源
    最近更新 更多