私は現在Charts - by Daniel Gindiを使用していて、彼のデモ以下、私はそうのような円グラフを実装しました:iOSチャート:PieChart内のパーセンテージで実際の値を表示していますか?
それは、次のコードを使用して達成した:
func createPieChart(dataPoints: [String: Double])
{
for index in 0..<sortedDates.count
{
let year = sortedDates[index]
guard let costs = dataPoints[year] else {
return
}
let dataEntry = PieChartDataEntry(value: costs, label: year)
dataEntries.append(dataEntry)
}
chartDataSet = PieChartDataSet(values: dataEntries, label: "")
chartData = PieChartData(dataSet: chartDataSet)
chartDataSet.sliceSpace = 2.0
chartDataSet.yValuePosition = PieChartDataSet.ValuePosition.outsideSlice
...
pieChartView.usePercentValuesEnabled = true
pieChartView.drawSlicesUnderHoleEnabled = false
pieChartView.holeRadiusPercent = 0.40
pieChartView.transparentCircleRadiusPercent = 0.43
pieChartView.drawHoleEnabled = true
pieChartView.rotationAngle = 0.0
pieChartView.rotationEnabled = true
pieChartView.highlightPerTapEnabled = false
let pieChartLegend = pieChartView.legend
pieChartLegend.horizontalAlignment = Legend.HorizontalAlignment.right
pieChartLegend.verticalAlignment = Legend.VerticalAlignment.top
pieChartLegend.orientation = Legend.Orientation.vertical
pieChartLegend.drawInside = false
pieChartLegend.yOffset = 10.0
pieChartView.legend.enabled = true
pieChartView.data = chartData
}
私は「何達成しようとしているのは、円のスライス内に実際のcosts
の値を表示することですが、スライスの外側のパーセンテージも含めます。割合はchartDataSet.yValuePosition = PieChartDataSet.ValuePosition.outsideSlice
を使用して示しています。その後
let valueText = formatter.stringForValue(
value,
entry: e,
dataSetIndex: i,
viewPortHandler: viewPortHandler)
それが描くif
チェックを、使用して:コードの検査
は、私がPieChartRenderer
で、open override func drawValues(context: CGContext)
機能し、その中で、コードがvalueText
に各円スライスの割合を計算がそこにあることに気づきました私の場合には外にあるスライス内部または外部の割合、:
else if drawYOutside
{
ChartUtils.drawText(
context: context,
text: valueText,
point: CGPoint(x: 0, y: labelPoint.y + lineHeight/2.0),
align: align,
attributes: [NSFontAttributeName: valueFont, NSForegroundColorAttributeName: valueTextColor]
)
}
しかし、私は実際に方法を見つけることができませんがcosts
番目の値が含まれますatはPieChartDataEntry(value: costs, label: year)
に渡されます。
私は円グラフをサブクラス化し、見つけたメソッドをオーバーライドするように言われましたが、その方法を正確には分かりません。例えば
、dataPoints
内の各インデックスにcosts
の値は、ラベル2016
のラベル2017
と50.0
ため100.0
重複値です。関連する円のスライスにこれらの値を両方含めるとします。
このライブラリの経験があれば誰でも私を助けることができますか?
ありがとうございます!
あなたがチャートまたは%値の隣の内側にあなたの価値を引き出す必要がありますか? –
年が – Pangu