图例是否限制了标题数量?

时间:2015-09-20 22:13:17

标签: swift ios-charts

我正在使用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]

我的代码将pieChart设置为:

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个标签。它完美地回归了馅饼切片。但不是传奇中的标签。

enter image description here

我做错了吗?提前致谢我们。让我知道。

1 个答案:

答案 0 :(得分:1)

解决。

在阅读Android版framework docs时更好一点:

  

自动生成的图例包含的条目数   取决于不同颜色的数量(跨所有DataSet对象)   以及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
    ]
}

如果您遇到同样的问题,请定义更多颜色以满足所需最大标签数量的需求。如果您尝试对图例进行自动换行(我也面临着这一点),这也可以解决问题。