2

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 つ以上印刷することはできません。パイスライスを完全に返しています。しかし、凡例のラベルではありません。

ここに画像の説明を入力

私は何か間違ったことをしていますか?お知らせいただきありがとうございます。

4

1 に答える 1

1

解決しました。

Android バージョンのフレームワーク ドキュメントを読むと、次のようになります。

自動生成された凡例に含まれるエントリの数は、(すべての DataSet オブジェクトの) 異なる色の数と DataSet ラベルによって異なります。凡例のラベルは、チャートで使用される DataSet オブジェクトに設定されたラベルによって異なります。DataSet オブジェクトのラベルが指定されていない場合、チャートはそれらを自動的に生成します。1 つの DataSet に複数の色が使用されている場合、それらの色はグループ化され、1 つのラベルでのみ説明されます。

使用しようとしていたラベルの数に合わせて、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
    ]
}

同じ問題がある場合は、必要な最大数のラベルのニーズを満たすために、より多くの色を定義してください。凡例をワードラップしようとすると、これも問題を解決します(私も直面していました)。

于 2015-09-21T08:05:50.737 に答える