【问题标题】:Does the legend limit the number of titles?图例是否限制标题的数量?
【发布时间】:2015-09-22 05:25:14
【问题描述】:

我正在使用 iso-charts 尝试在 iOS 应用中绘制饼图。

无论我如何尝试,我似乎都无法在图例中绘制完整的标题。

我的数据设置为:

ages = ["18-", "25-", "35-", "45-", "55-", "65-", "75+"]
agePercentages = [10.0, 20.0, 30.0, 5.0, 10.0, 45.0, 120.0]

我将饼图设置为的代码:

func setPieDefaults(myPieChart: PieChartView) -> PieChartView {

    myPieChart.frame = CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, UIScreen.mainScreen().bounds.size.width*0.5)
    myPieChart.usePercentValuesEnabled = true
    myPieChart.holeTransparent = true
    myPieChart.holeColor = UIColor.darkPurpleColor()
    myPieChart.backgroundColor = UIColor.darkPurpleColor()
    myPieChart.rotationAngle = 0.0
    myPieChart.rotationEnabled = true
    myPieChart.centerTextFont = UIFont(name: "HelveticaNeue-Bold", size:20)!
    myPieChart.descriptionText = ""
    myPieChart.centerText = "%"
    myPieChart.centerTextColor = UIColor.whiteColor()
    myPieChart.drawHoleEnabled = true
    myPieChart.noDataText = "Loading Data ..."
    let legend = myPieChart.legend
    legend.font = UIFont(name: "Arial", size: 11)!
    legend.textColor = UIColor.whiteColor()
    legend.position = .RightOfChart
    legend.form = .Circle

    return myPieChart
}

还有..

func setChart(dataPoints: [String], values: [Double], myPieView: PieChartView) {

    var dataEntries: [ChartDataEntry] = []

    for i in 0..<dataPoints.count {
        let dataEntry = ChartDataEntry(value: values[i], xIndex: i)
        dataEntries.append(dataEntry)
    }

    var colors = [UIColor]()
    switch myPieView {
    case genderPieChartView:
        colors = [UIColor.blueColor(), UIColor.pinkColor()]
    default:
        colors = ChartColorTemplates.colorful()
    }

    let pieChartDataSet = PieChartDataSet(yVals: dataEntries, label: nil)
    pieChartDataSet.sliceSpace = 3.0
    pieChartDataSet.colors = colors

    let pieChartData = PieChartData(xVals: dataPoints, dataSet: pieChartDataSet)
    myPieView.animate(xAxisDuration: 2, yAxisDuration: 2)

    let pFormatter = NSNumberFormatter()
    pFormatter.numberStyle = .PercentStyle
    pFormatter.maximumFractionDigits = 0
    pFormatter.percentSymbol = ""
    pFormatter.multiplier = 1
    pieChartData.setValueFormatter(pFormatter)
    pieChartData.setValueFont(UIFont(name: "HelveticaNeue-Bold", size: 11)!)
    pieChartData.setValueTextColor(UIColor.whiteColor())

    myPieView.data = pieChartData
    myPieView.drawSliceTextEnabled = false

}

但它不会打印超过 5 个标签。它完美地返回了馅饼片。但不是图例中的标签。

我做错了吗?提前感谢您让我知道。

【问题讨论】:

    标签: swift ios-charts


    【解决方案1】:

    解决了。

    在阅读framework docs为Android版本好一点:

    自动生成的图例包含的条目数 取决于不同颜色的数量(跨所有 DataSet 对象) 以及数据集标签上。图例的标签取决于 为图表中使用的 DataSet 对象设置的标签。如果没有标签 对于已指定的 DataSet 对象,图表将 自动生成它们。如果一种颜色使用多种颜色 DataSet,这些颜色是分组的,只用一个标签来描述。

    我意识到我需要增加 ChartColorTemplate.colorful() 定义中的颜色数量以匹配我尝试使用的标签数量。当前的示例代码只定义了 5 种颜色。

    public class func colorful () -> [UIColor]
    {
        return [
            UIColor(red: 193/255.0, green: 37/255.0, blue: 82/255.0, alpha: 1.0),
            UIColor(red: 255/255.0, green: 102/255.0, blue: 0/255.0, alpha: 1.0),
            UIColor(red: 245/255.0, green: 199/255.0, blue: 0/255.0, alpha: 1.0),
            UIColor(red: 106/255.0, green: 150/255.0, blue: 31/255.0, alpha: 1.0),
            UIColor(red: 179/255.0, green: 100/255.0, blue: 53/255.0, alpha: 1.0),
            UIColor(red: 200/255.0, green: 100/255.0, blue: 53/255.0, alpha: 1.0), // added colour
            UIColor(red: 150/255.0, green: 150/255.0, blue: 70/255.0, alpha: 1.0), // added colour
            UIColor(red: 84/255.0, green: 78/255.0, blue: 53/255.0, alpha: 1.0), // added colour
        ]
    }
    

    如果你有同样的问题,那么定义更多的颜色来满足需要的最大标签数量的需要。如果您尝试对图例进行自动换行(我也遇到过),这也将解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多